在我的OnItemLongClick
中,我需要设置GONE
到VISIBLE
的复选框的可见性。
bookList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
if (!inSelectMode) {
inSelectMode = true;
myAdapter.setCheckMode(true);
CheckBox checkBox = view.findViewById(R.id.checkBox);
if (checkBox.isEnabled()) {
checkBox.performClick();
}
int books = myAdapter.getCheckCount();
// totalSelected.setVisibility(View.VISIBLE);
// totalSelected
// .setText("You've selected " + ((books == 0) ? "no" : Integer.toString(books)) + ((books == 1) ? " book" : " books"));
}
return true;
}
});
取消注释totalSelected.setVisibility()
后,包含setCheckMode()
的方法checkBox.setVisibility()
无效。没有错误,它只是没有做任何事情。
totalSelected
是我的活动中的textView
,checkBox
是我CheckBox
的行布局中的ListView
。将两个视图一起使用时是否存在某种问题(因为一个在我的activity.xml中,另一个在我的rowlayout.xml中)?如果是这样我该如何解决这个问题呢?
我的适配器的相关部分:
public void setCheckMode(boolean checkMode) {
Log.d("setCheckMode :",checkMode?" true":" false");
this.isCheckMode = checkMode;
notifyDataSetChanged();
if(!checkMode){
checker.isAnyChecked(false);
checkCount = 0;
}
}
-
public void bindView(View v, Context context, Cursor cursor) {
Log.d("bindView :", cursor.getString(1));
final CheckBox checkBox = (CheckBox) v.findViewById(R.id.checkBox);
Log.d("BindView isCheckMode?:",isCheckMode ? "true" : "false");
if(isCheckMode){
checkBox.setVisibility(View.VISIBLE);
Log.d("checkbox visibility :","visible");
}
else{
checkBox.setVisibility(View.GONE);
Log.d("checkbox visibility","gone");
}
if (!isCheckMode){
Log.d("setChecked :","false");
checkBox.setChecked(false);
}