使用onClick XML

时间:2016-04-21 23:42:24

标签: android listview android-fragments nullpointerexception

我还在学习很多关于编程的知识。 我目前已经设置了自己的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();

}

收到此错误表示我的片段中的“适配器”为空。这是在创建片段时更早初始化的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你不需要让它如此复杂。从视图中移除android:onClick="delItem"并在getView()中附加监听器。 初始化deleteItemButtonsetOnClickListener() -

deleteItemButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    _ItemObject itemToRemove = (_ItemObject) v.getTag();
                    remove(itemToRemove);
                    notifyDataSetChanged();
                }
            });