0

我很好奇如何最好地处理ListFragment带有自定义适配器的按钮点击。

我有onClickListener按钮设置,但我需要能够获取单击它的项目,因为它在一个项目内,这是getView自定义适配器的内部。

*/
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;

        if (convertView == null) {
            view = _inflater.inflate(R.layout.test_single_item, parent, false);
        } else {
            view = convertView;
        }

        TestItemModel item = getItem(position);
        ((TextView) view.findViewById(R.id.item_label)).setText(item.getName());
        ((TextView) view.findViewById(R.id.item_id)).setText(item.getId());
        ImageView image = (ImageView) view.findViewById(R.id.image_id);
        Resources resources = this.getContext().getResources();
        image.setImageDrawable(resources.getDrawable(R.drawable.ic_launcher));
        Button btn = (Button) view.findViewById(R.id.button_id);
        Button btn2 = (Button) view.findViewById(R.id.button_id_2);
        Button btn3 = (Button) view.findViewById(R.id.button_id_3);
        ol = new OnItemClickListener(position);
        btn.setOnClickListener(ol);
        btn.setTag(1);
        btn2.setOnClickListener(ol);
        btn2.setTag(2);
        btn3.setOnClickListener(ol);
        btn3.setTag(3);

        return view;
    }

如您所见,我使用标签来确定单击了哪个按钮,并且OnItemClickListener知道该位置与被调用位置的位置。

我不确定最佳方法以及如何正确执行此操作。

4

1 回答 1

2

使用如下开关盒

private OnClickListener mClickListener = new OnClickListener() {

            public void onClick(View v) {
                switch(v.getId())
                {
                case R.id.button_id :
                    // btn clicked
                            Toast.makeText(context," Button1 clicked at positon"+v.getTag(), Toast.LENGTH_SHORT).show();
                    break;
                case R.id.button_id2 :
                    // btn2 clicked   
                           Toast.makeText(context," Button2 clicked at positon"+v.getTag(), Toast.LENGTH_SHORT).show();
                    break;  
                case R.id.button_id3 :
                            Toast.makeText(context," Button3 clicked at positon"+v.getTag(), Toast.LENGTH_SHORT).show();  
                    // btn 3 clciked
                    break; 
                }

            }
        };

利用

btn.setOnClickListener(mClickListener);
btn.setTag(position);
btn2.setOnClickListener(mClickListener);
btn2.setTag(position);
btn3.setOnClickListener(mClickListener);
btn3.setTag(position);

带有两个按钮的示例快照

在位置 0 即第一行单击按钮 1 的快照

在此处输入图像描述

在位置 1 即第二行单击按钮 2 的快照

在此处输入图像描述

于 2013-10-21T06:41:20.667 回答