使用 overridePendingTransition 导致列表适配器中出现 classcastexception

Use of overridePendingTransition resulted in classcastexception in list adapter

我正在使用适配器将数据加载到列表视图,我正在尝试将 overridePendingTransitionintent 一起使用。

这就是我的使用方式,

((Activity) context).overridePendingTransition(
                        R.anim.slide_in_right, R.anim.slide_out_left);

这是adapter.javaclass

public class CustomListAddress extends BaseAdapter {

    private Context context;
    private final List<String> firstName;


    public CustomListAddress(Context c, List<String> firstName) {

        this.context = c;
        this.firstName = firstName;

    }

    @Override
    public int getCount() {
        return firstName.size();
    }

    @Override
    public Object getItem(int position) {
        return firstName.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(
                    R.layout.address_list_item, parent, false);

            holder.tvHeader = (TextView) convertView.findViewById(R.id.lblname);
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.tvHeader.setText(firstName.get(position));

        LinearLayout addresslist = (LinearLayout) convertView
                .findViewById(R.id.addressLayout);
        addresslist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent next = new Intent(context,
                        ActivityMyAddressAdd.class);
                next.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

                 next.putExtra("firstName", firstName.get(position));

                context.startActivity(next);
                ((Activity) context).overridePendingTransition(
                        R.anim.slide_in_right, R.anim.slide_out_left);
            }
        });

        return convertView;
    }

    private class ViewHolder {
        private TextView tvHeader;
    }
}

当我按照适配器 class 中所示尝试它时,它崩溃并给出下面提到的异常。

您似乎将 Application 上下文而不是 Activity 上下文传递给 CustomListAddress 构造函数。为了开始新的 Activity 你需要使用它的上下文。

你应该这样做:

public class SomeActivity extends Activity {
      CustomListAddress adapter;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
           ...
           adapter = new CustomListAddress(this, firstName);
           ...
      }
}

第一个参数 SomeActivity.this 应该可以解决问题

我能够通过更改 activity class 中的这一行来获得答案,因为需要传递 activity 实例。

adapter = new CustomListAddress(ActivityMyAddressList.this,firstName).