我是Android的新手,我有以下问题
我有一个ListView。 ListView填充了ArrayList中的数据。我在每一行都添加了一个CheckBox。
单击“Resume-Button”后,我想将所选项目写入SQLliteDB(数据库工作正常 - 我使用静态数据对其进行了测试)。
我现在的问题是: 如何从列表中获取选中的项目?
大家帮忙! 最好的祝福 KYP
答案 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状态......而且效果很好!