列表视图中的按钮不能正常工作?

时间:2018-05-15 09:12:20

标签: android xml listview

在我的list_item中,每个项目中都有两个按钮。问题是按钮不起作用,除非我单击该项目然后单击按钮。 例如,我必须单击该项目,然后单击删除图标以删除该项目。 ListView with two items

list_item:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    >

        <ImageView
            android:id="@+id/play_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:clickable="true"
            android:focusable="true"
            android:padding="5dp"
            android:src="@drawable/ic_play_circle_black_24dp"
            android:tint="#4CAF50"
            android:layout_weight="1"
            />

        <ImageView
            android:id="@+id/delete_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="16dp"
            android:background="?attr/selectableItemBackgroundBorderless"
            android:clickable="true"
            android:focusable="true"
            android:padding="5dp"
            android:src="@drawable/ic_delete_black_24dp"
            android:tint="#FF0000"
            android:layout_weight="1"
            />

            </LinearLayout>

1 个答案:

答案 0 :(得分:0)

很抱歉所有人都迟到了!

我有解决方案;问题是我删除了Activity中的ListView项而不是在Adapter中执行它;)

无效的代码(MainActivity):

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {


                // delete button
                ImageView deleteBtn = view.findViewById(R.id.delete_btn);
                deleteBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        mAdapter.remove(mAdapter.getItem(i));
                    }
                });

            }
        });

正确的代码(适配器):

 deleteBtn.setTag(position);
        deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Integer index = (Integer) deleteBtn.getTag();
                remove(getItem(index));

            }
        });

非常感谢大家的帮助:)。