Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除项目后如何使用Android-notifyDataSetChanged()?_Java_Android - Fatal编程技术网

Java 删除项目后如何使用Android-notifyDataSetChanged()?

Java 删除项目后如何使用Android-notifyDataSetChanged()?,java,android,Java,Android,我搜索了很多类似的问题……他们都说我必须使用类似于以下代码的东西: arrayAdapter.notifyDataSetChanged(); 此代码之后:书签。删除(pos) 但您可以看到……在BookMarkActivity类中,不要使用arrayAdapter public class BookMarkActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInst

我搜索了很多类似的问题……他们都说我必须使用类似于以下代码的东西:

arrayAdapter.notifyDataSetChanged();
此代码之后:
书签。删除(pos)

但您可以看到……在BookMarkActivity类中,不要使用
arrayAdapter

public class BookMarkActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.message);

        // Reading all contacts
        final ArrayList<BookMark> bookmarks = (ArrayList<BookMark>) db.getAllBookMarks();
        BuildingAdapter adapter = new BuildingAdapter(context);
        // ADDED
        final ListView lv = (ListView) findViewById(R.id.list_view);
        lv.setAdapter(new BookmarkAdapter(this, bookmarks));

        lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           int pos, long id) {

                bookmarks.remove(pos);

                return true;
            }
        });

    }
}
公共类书签活动扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.message);
//读取所有联系人
最终ArrayList书签=(ArrayList)db.getAllBookMarks();
BuildingAdapter=新的BuildingAdapter(上下文);
//增加
最终ListView lv=(ListView)findViewById(R.id.list\u视图);
lv.setAdapter(新书签适配器(这个,书签));
lv.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
长单击(AdapterView arg0、视图arg1、,
内部位置,长id){
书签。删除(pos);
返回true;
}
});
}
}
我是android新手…但我尝试用以下方法更改代码:

private ArrayAdapter<BookMark> arrayAdapter;
arrayAdapter = new BookmarkAdapter(this, bookmarks);
private ArrayAdapter ArrayAdapter;
arrayAdapter=新书签适配器(此为书签);

但是没有成功!删除一项后不刷新列表视图

ListView显示存储在ArrayList中的一些数据

当元素移除或外接程序ArrayList时,必须告诉列表数据源已更改以显示新数据

这就是notifyDatasetChanged()的作用。它告诉ListView数据已被修改,因此请反映更改的数据

final BookmarkAdapter adapter = new BookmarkAdapter(this, bookmarks);
lv.setAdapter(adapter);
并在移除元件后使用线下

adapter.notifyDataSetChanged();

希望有帮助。

只需在按钮/imageView单击侦听器上添加两行即可。

delete.setOnClickListener {
                list.removeAt(pos)
                notifyItemRemoved(pos)
            }

您还可以设置适配器,右键:
lv.setAdapter(arrayAdapter)?@karaokyo没有,现在可以工作了。谢谢。