simpleAdapter中的listview子项按钮点击事件实现

 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;
    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值