java - 复选框数据未在其他 Activity 中传递

标签 java android

我试图借助 Intent 将 ListView 中存在的复选框的位置传递给另一个 Activity 。但它显示我在另一项 Activity 中无效。或者有人可以告诉我如何使用下面的代码将选定的复选框数据传递到另一个 Activity ?

我想将相应复选框的 ListView 中的值存储在数组中。然后转移到另一个 Activity

public class MyAdapter extends ArrayAdapter<Model> {
int getPosition;
Intent in;
private final List<Model> list;
public final Activity context;
boolean checkAll_flag = false;
boolean checkItem_flag = false;

public MyAdapter(Activity context, List<Model> list) {
    super(context, R.layout.row, list);
    this.context = context;
    this.list = list;
}

static class ViewHolder {
    protected TextView text;
    protected CheckBox checkbox;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder viewHolder = null;
    if (convertView == null) {
        LayoutInflater inflator = context.getLayoutInflater();
        convertView = inflator.inflate(R.layout.row, null);
        viewHolder = new ViewHolder();
        viewHolder.text = (TextView) convertView.findViewById(R.id.label);
        viewHolder.checkbox = (CheckBox) convertView
                .findViewById(R.id.check);
        viewHolder.checkbox
                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
                         getPosition = (Integer) buttonView.getTag(); // setTag.

                    }
                });
        convertView.setTag(viewHolder);
        convertView.setOnClickListener(new MyCustomItemClickListener(getPosition));

        convertView.setTag(R.id.label, viewHolder.text);
        convertView.setTag(R.id.check, viewHolder.checkbox);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.checkbox.setTag(position); // This line is important.

    viewHolder.text.setText(list.get(position).getName());
    viewHolder.checkbox.setChecked(list.get(position).isSelected());

    return convertView;
}

class MyCustomItemClickListener implements OnClickListener {

    MyCustomItemClickListener(int getPositionx) {
        /*
         * Whatever initialization you need can be done here. You can pass
         * values in constructor when calling it from getview and use with
         * intent extras
         */
         in = new Intent(context, YourActivity.class);
         in.putExtra("aa", getPositionx);
    }

    @Override
    public void onClick(View arg0) {
        // Launch Activity

        context.startActivity(in);
    }

  }
}

最佳答案

按照下面的方法尝试一下。无需在构造函数内传递 getPositionx,因为您已经在类中全局定义了它。

class MyCustomItemClickListener implements OnClickListener {

    MyCustomItemClickListener() {
        /*
         * Whatever initialization you need can be done here. You can pass
         * values in constructor when calling it from getview and use with
         * intent extras
         */

    }

    @Override
    public void onClick(View arg0) {
        // Launch Activity

   in = new Intent(context, YourActivity.class);
         in.putExtra("aa", getPositionx);

        context.startActivity(in);
    }

}

并将您的初始化更改为

convertView.setOnClickListener(new MyCustomItemClickListener());

关于java - 复选框数据未在其他 Activity 中传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15037771/

相关文章:

java - Jersey 端点在查询参数中使用 '+'

java - 构造函数 Intent(FragmentTab1, Class<AlgbraHome>) 未定义

java - 数组索引越界 - 2d 到 1d

android - onResume() 后无法关闭 AlertDialog

android - 如何在 jack 中使用 Android 注释及其注释处理器?

java - 创建 Realm 对象时出现问题( IllegalStateException : Cannot modify managed objects outside of a write transaction)

java - AspectJ 方面是单例吗?

android - 我有一个关于 android listView 和 baseAdapter 的奇怪情况?

android - 使用 ICS Holo 样式动态创建 EditText

android - Bluemix 示例应用程序失败并返回 "Failed to authenticate against MCA"