【发布时间】:2011-10-27 11:46:01
【问题描述】:
我正在制作我的第一个 Android 应用程序,但我遇到了一个在 Google 上找不到任何答案的问题。
我想要一个带有复选框的项目列表。我希望项目本身和复选框都是可点击的。
public class MyItem extends ListActivity {
private ArrayList<MyItem> items;
public void onCreate(Bundle savedInstanceState) {
/* code which creates instances of MyItem and inserts them on the *list* variable */
MyArrayAdapter adapter = new MyArrayAdapter(this, R.layout.my_item, list);
setListAdapater(adapter);
setContentView(R.layout.items_list);
}
public onListItemClick(ListView l, View v, int position, long id){
//handles the click on an item
}
public class MyArrayAdapter extends ArrayAdapter<MyItem>{
private MyItem item;
public MyArrayAdapter(Context context, int resourceId, ArrayList<MyItem> list){
//code for the constructor
}
public getView(int position, View convertView, ViewGroup parent){
convertView = inflater.inflate(resourceId, null);
this.item = list.get(position);
if (this.item == null) {
return convertView;
}
else{
if (resourceId == R.layout.my_item) {
final CheckBox cb = (CheckBox)convertView.findViewById(R.id.checkbox);
if(cb != null){
//initially
if(chosen)
cb.setChecked(true);
else
cb.setChecked(false);
//set listener
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if(cb.isChecked())
chosen = true;
else
chosen = false;
}
});
}
}
return convertView;
}
}
}
不要担心选择的变量。我把它写成简单的代码。它实际上对应于数据库中的一个值。单击一个项目就可以了。但是,当我单击复选框时,会发生这种情况:
- 我单击的复选框显示为选中状态(这是 Android 用户界面的工作)
- 内部选中的复选框是屏幕上的最后一个复选框,无论它是什么,即,如果我的屏幕显示 8 个项目并且我单击其中一个(不管是哪一个),则检查显示在正确的复选框,但在内部,第 8 项是被选中的项。
如果您能为我提供任何帮助,我将不胜感激。提前致谢。
【问题讨论】:
标签: android list checkbox listactivity android-arrayadapter