记住选定的ListView项目

时间:2011-06-06 21:14:18

标签: java android

我是Android的新手,我有以下问题

我有一个ListView。 ListView填充了ArrayList中的数据。我在每一行都添加了一个CheckBox。

单击“Resume-Button”后,我想将所选项目写入SQLliteDB(数据库工作正常 - 我使用静态数据对其进行了测试)。

我现在的问题是: 如何从列表中获取选中的项目?

大家帮忙! 最好的祝福 KYP

3 个答案:

答案 0 :(得分:4)

您可以使用此ListView方法getCheckedItemPositions()来获取所有已检查的位置。确保ListView中的子视图实际实现了Checkable接口,否则复选标记信息将不会传递给ListView。

答案 1 :(得分:0)

您可以使用for循环和getItemAtPosition(int)浏览列表。 对于每一行,您只需检查项目是否已选中,isChecked()是否为复选框。没有看到我能得到的具体代码。如果这还不够清楚,那么发布一些关于listView

中存储的项目/项目的代码

希望这有帮助!

答案 2 :(得分:0)

但我自己想通了。 我只想通过单击复选框视图来选择行。

我修改了自定义数组适配器

这是我的代码:

public class ContactAdapter extends ArrayAdapter<Contact> implements OnClickListener{

private static HashMap<Integer, Boolean> teamItems = new HashMap<Integer, Boolean>();
int count = 0;

private List<Contact> items;
private int mode;

CheckBox add_to_team;
static int counter = 3;

public ContactAdapter(Context context, int textViewResourceId, List<Contact> objects, int mode) {
    super(context, textViewResourceId, objects);
    // TODO Auto-generated constructor stub
    this.context = context;
    this.mode = mode;
    this.items = objects;
}

@Override
public View getView(int position, View convertView, final ViewGroup parent) {
    View v = convertView;

    if(v == null) {
        //get a reference to the LayoutInflator
        LayoutInflater li = (LayoutInflater)getContext()
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //and inflate our XML into the View
        v = li.inflate(R.layout.list_contacts_item, null);
    }

    String race = items.get(position).race;
    String nick = items.get(position).nick;
    String name = items.get(position).name;
    final int pos = position;

    if(v!= null) {
        // Do the work for the other views

        // MODE 1 = SELECTION-MODE  
        if(mode == 1) {

            add_to_team.setVisibility(0);

            try {
                if(count!=0) {
                    boolean b = teamItems.get(pos);
                    if(b==false) {
                        add_to_team.setChecked(false);
                    }
                    else {
                        add_to_team.setChecked(true);
                    }
                }
            } catch (NullPointerException e) {

            }

            add_to_team.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                    teamItems.put(pos, arg1);
                    count++;
                }
            });
        } else {
            add_to_team.setVisibility(8);
        }
    }
    return v;
}   

}

我添加了一个HashMap,我在其中保存所选项目。我可以通过调用HashMap来调用我的活动中的select状态......而且效果很好!