以下是我为列表
设置适配器的代码 ListView drawer;
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getBaseContext(), R.layout.drawer_item, list);
drawer.setAdapter(adapter);
// drawer.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
drawer.setOnItemClickListener(listItemClickListener);
我在drawer.setItemChecked(pos,true);
添加了onItemClickListener
。但它不起作用。
答案 0 :(得分:2)
drawer.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
在为listview执行findviewbyid之后执行此操作,并在setonclicklistner
中单击您的复选框,并且还可以使用checkedchangelistener
在里面做这个
listOfSavedItems.setItemChecked(i, ((CheckBox) v).isChecked());
您可以使用SparseBooleanArray
查看是否设置了
SparseBooleanArray sbA=listview.getCheckedItemPositions();
并使用setTag
和getTag
获取所有复选框的位置,并根据位置选中或取消选中复选框
for (int i = 0; i <=positionsSparseArray.size(); i++) {
int pos = (int) viewHolder.checkBox.getTag();
if (i == pos) {
viewHolder.checkBox.setChecked(positionsSparseArray.get(i));
}
}
答案 1 :(得分:0)
尝试将列表视图中的所有项目设置为不可聚焦。
drawer.setItemsCanFocus(false);
另外,请确保列表项目内的项目设置为focusable false
android:focusable="false"
android:focusableInTouchMode="false"
答案 2 :(得分:0)
我使用了带有复选框和名称的自定义适配器作为单独的实体,这些实体位于我使用OnCheckedChangeListener
的tabitems上,这是一个漫长的过程,但对我有效。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflator = reportViewContext.getLayoutInflater();
convertView = inflator.inflate(R.layout.tabitems, null);
viewHolder.name= (TextView) convertView
.findViewById(R.id.name);
viewHolder.address= (TextView) convertView
.findViewById(R.id.adress);
viewHolder.checkbox = (CheckBox) convertView
.findViewById(R.id.checkbox);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
UserModel element = (UserModel) viewHolder.checkbox
.getTag();
element.setChecked(buttonView.isChecked());
UserModel model= data.get(position);
model.setChecked(buttonView.isChecked());
}
});
viewHolder.checkbox.setTag(data.get(position));
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
((ViewHolder) convertView.getTag()).checkbox.setTag(data.get(position));
}
//remaining data operation tasks....
喝彩!..