我还在学习很多关于编程的知识。 我目前已经设置了自己的listview项目布局来显示自定义对象。 在此自定义列表视图布局中,有一个图像按钮,其中包含与之关联的onClick方法。
我已经意识到onClick被传递回父活动,但我不知道如何删除我的listview项目,因为我的自定义对象的arraylist在片段内。
我可能不会很好地解释自己,所以这里有代码片段。
自定义列表视图布局中的图像按钮XML:
<ImageButton
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@drawable/deleteitem"
android:scaleType="fitCenter"
android:background="@null"
android:adjustViewBounds="true"
android:layout_weight="0.15"
android:layout_marginEnd="5dp"
android:id="@+id/deleteItemButton"
android:onClick="delItem"/>
父活动中的OnClick方法:
public void delItem(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
ItemList_Fragment itemlistclass = new ItemList_Fragment();
itemlistclass.removeItem(itemToRemove);
}
在fragment中找到removeItem方法:
public void removeItem(_ItemObject itemToRemove) {
adapter.remove(itemToRemove);
adapter.notifyDataSetChanged();
}
收到此错误表示我的片段中的“适配器”为空。这是在创建片段时更早初始化的。任何帮助将不胜感激。
答案 0 :(得分:1)
你不需要让它如此复杂。从视图中移除android:onClick="delItem"
并在getView()
中附加监听器。
初始化deleteItemButton
和setOnClickListener()
-
deleteItemButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
remove(itemToRemove);
notifyDataSetChanged();
}
});