在我的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>
答案 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));
}
});
非常感谢大家的帮助:)。