Это то, что я хочу достичь функции: В ListView стиль предмет можно использовать пользовательский файл макета XML. Когда я долго нажимаю на элемент списка, флажок VISIBLE и может реагировать на событие клика. Android ListView элемент Длинное нажатие не реагирует CheckBox событие
Но когда я нажимаю на список или флажок, у него нет ответа. Почему?
Это часть моего Список адаптер код:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = null;
final ViewHolder holder;
if (null != convertView && convertView instanceof LinearLayout) {
view = convertView;
holder = (ViewHolder) view.getTag();
} else {
view = View.inflate(notifyFragment.getActivity(),R.layout.item_notify, null);
holder = new ViewHolder();
holder.title = (TextView) view.findViewById(R.id.notify_title);
holder.timestamp = (TextView) view.findViewById(R.id.notify_timestamp);
holder.content = (TextView) view.findViewById(R.id.notify_content);
holder.cbox = (CheckBox)view.findViewById(R.id.notify_cbox);
holder.markFlag = (ImageView)view.findViewById(R.id.notify_markflag);
view.setTag(holder);
}
Item_Notify inform_item = notify_list.get(position);
holder.title.setText(inform_item.get_title());
holder.timestamp.setText(inform_item.get_timestamp());
holder.content.setText(inform_item.get_content());
if (isShow) {
holder.cbox.setVisibility(View.VISIBLE);
Boolean flag = notifyFragment.recodeStatu.get(position);
if (flag == null) {
holder.cbox.setChecked(false);
} else {
holder.cbox.setChecked(flag);
}
} else {
holder.cbox.setVisibility(View.GONE);
}
return view;
}
static class ViewHolder {
TextView title;
TextView content;
TextView timestamp;
CheckBox cbox;
ImageView markFlag;
}
Это Нажмите Event:
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
listAdapter.isShow = true;
listAdapter.notifyDataSetChanged();
ll_notify_action.setVisibility(View.VISIBLE);
return true;
}
});
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (listAdapter.isShow) {
CheckBox cb = (CheckBox) view.findViewById(R.id.notify_cbox);
boolean isCheck = !cb.isChecked();
if (isCheck) {
count++;
} else {
count--;
}
btn_del.setText("Delete(" + count + ")");
recodeStatu.put(position, isCheck);
cb.setChecked(isCheck);
} else {
Toast.makeText(getActivity(), "click " + position, Toast.LENGTH_SHORT).show();
}
}
});
@Kelvin и нужно поставить флажок в GetView() метод, и от того, и нужно изменить в модели класса с булевыми. – PankajAndroid
Я не уверен, правильно ли я это понял, но вам нужно подключить OnclickListener к вашей CheckBox (когда это видно) в классе ListAdapter. –