1.不推荐,这种可以控制item项的点击事件,缺点是必须点击item项后才能点击内部按钮
// 内部控件点击事件
// AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
// @Override
// public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// textContent = view.findViewById(R.id.to_do_item_main_title);
// //绑定按钮控件
// completedBtn = view.findViewById(R.id.to_do_item_main_item_icon);
// cancelcompletedBtn = view.findViewById(R.id.to_do_item_main_item_cancel_icon);
// rightBtn = view.findViewById(R.id.to_do_item_main_icon2);
// cancelRightBtn = view.findViewById(R.id.to_do_item_main_cancel_icon2);
// cancelcompletedBtn.setVisibility(View.GONE);
// //按钮点击事件
// completedBtn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// completedToDoItems(true);
// //添加删除线
// textContent.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
// simpleAdapter.notifyDataSetChanged();
// Toast.makeText(getActivity(), textContent.getText(), Toast.LENGTH_SHORT).show();
// //数据库中删除记录
//
// }
// });
// cancelcompletedBtn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// completedToDoItems(false);
// //取消删除线
// textContent.getPaint().setFlags(0);
// simpleAdapter.notifyDataSetChanged();
// }
// });
// rightBtn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
// }
// });
// cancelRightBtn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
//
// }
// });
// }
// };
// mListView.setOnItemClickListener(itemClickListener);
2. 新建适配器类,继承SimpleAdapter重写getView,这种可以完全实现内部控件的点击事件
public class MySimpleAdapter extends SimpleAdapter {
private List<Map<String, Object>> listItems = new ArrayList<>();
private int resourceId;
public MySimpleAdapter(Context context, List<? extends Map<String,Object >> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
resourceId = resource;
listItems = (List<Map<String, Object>>) data;
}
@Override
public int getCount() {
return listItems.size();
}
@Override
public Object getItem(int position) {
return listItems.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// ToDoItemMain toDoItemMain = (ToDoItemMain) getItem(position);
View view;
final ViewHolder viewHolder;
if (convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
viewHolder = new ViewHolder(view, position);
view.setTag(viewHolder);
}else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
//设置列表项中初始化时控件属性
viewHolder.textContent.setText(listItems.get(position).get("待办事项内容").toString()); //**** 取值赋值* **********************************************************************************
viewHolder.completedBtn.setVisibility(View.VISIBLE);
viewHolder.rightBtn.setVisibility(View.VISIBLE);
viewHolder.cancelcompletedBtn.setVisibility(View.GONE);
viewHolder.cancelRightBtn.setVisibility(View.GONE);
//按钮点击事件
viewHolder.completedBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.completedBtn.setVisibility(View.GONE);
viewHolder.rightBtn.setVisibility(View.GONE);
viewHolder.cancelcompletedBtn.setVisibility(View.VISIBLE);
viewHolder.cancelRightBtn.setVisibility(View.VISIBLE);
onItemCompletedListener.onCompletedClick(position);
}
});
viewHolder.cancelcompletedBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.completedBtn.setVisibility(View.VISIBLE);
viewHolder.rightBtn.setVisibility(View.VISIBLE);
viewHolder.cancelcompletedBtn.setVisibility(View.GONE);
viewHolder.cancelRightBtn.setVisibility(View.GONE);
onItemCancelCompletedListener.onCancelCompletedClick(position);
}
});
return view;
}
class ViewHolder{
Button completedBtn;
Button cancelcompletedBtn;
Button rightBtn;
Button cancelRightBtn;
TextView textContent;
public ViewHolder(View view, int position){
textContent = view.findViewById(R.id.to_do_item_main_title);
//绑定按钮控件
completedBtn = view.findViewById(R.id.to_do_item_main_item_icon);
cancelcompletedBtn = view.findViewById(R.id.to_do_item_main_item_cancel_icon);
rightBtn = view.findViewById(R.id.to_do_item_main_icon2);
cancelRightBtn = view.findViewById(R.id.to_do_item_main_cancel_icon2);
}
}
// 完成按钮
public interface OnItemCompletedListener{
void onCompletedClick(int position);
}
private OnItemCompletedListener onItemCompletedListener;
public void setOnItemCompletedListener(OnItemCompletedListener onItemCompletedListener){
this.onItemCompletedListener = onItemCompletedListener;
}
// 取消完成
public interface OnItemCancelCompletedListener{
void onCancelCompletedClick(int position);
}
private OnItemCancelCompletedListener onItemCancelCompletedListener;
public void setOnItemCancelCompletedListener(OnItemCancelCompletedListener onItemCancelCompletedListener){
this.onItemCancelCompletedListener = onItemCancelCompletedListener;
}
}