Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 在用户单击项目后更新listview_Java_Android_Listview_Notifydatasetchanged - Fatal编程技术网

Java 在用户单击项目后更新listview

Java 在用户单击项目后更新listview,java,android,listview,notifydatasetchanged,Java,Android,Listview,Notifydatasetchanged,我有一个arraylist存储数据库中的数据并将其显示在listview中,当用户单击某个项目时,数据库中的数据将更新,我想知道如何刷新listview中的项目以显示更新的数据 //Adding item to ArrayList Cursor cursor2=shoppingListDB.rawQuery("SELECT * FROM ITEMS;", null); if (cursor2.moveToFirst()){

我有一个arraylist存储数据库中的数据并将其显示在listview中,当用户单击某个项目时,数据库中的数据将更新,我想知道如何刷新listview中的项目以显示更新的数据

//Adding item to ArrayList
            Cursor cursor2=shoppingListDB.rawQuery("SELECT * FROM ITEMS;", null);

            if  (cursor2.moveToFirst()){
                addArrrayList.clear();
                do{
                    String itemName = cursor2.getString(cursor2.getColumnIndex("ITEM_NAME"));

                    addArrrayList.add(itemName);
                }
                while (cursor2.moveToNext());


                //====CODE FOR SHOWING DATA AS A SIMPLE LIST ITEM=========================================

                ArrayAdapter <String> adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,addArrrayList);
                view_list.setAdapter(adapter);
            }
            else{
                Toast.makeText(getApplicationContext(), "DATA NOT AVAILABLE", 3000).show();
            }
            cursor2.close();
//将项添加到ArrayList
Cursor cursor2=shoppingListDB.rawQuery(“SELECT*FROM ITEMS;”,null);
if(cursor2.moveToFirst()){
addArrrayList.clear();
做{
String itemName=cursor2.getString(cursor2.getColumnIndex(“ITEM_NAME”));
addArrrayList.add(itemName);
}
while(cursor2.moveToNext());
//==用于将数据显示为简单列表项的代码=========================================
ArrayAdapter=新的ArrayAdapter(MainActivity.this,android.R.layout.simple\u list\u item\u 1,addArrayList);
查看列表。设置适配器(适配器);
}
否则{
Toast.makeText(getApplicationContext(),“数据不可用”,3000).show();
}
游标2.close();
这是我的SETONITEMCLICK侦听器代码

view_list.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)
    {
             String click = (addArrrayList.get(arg2).toString());
             String[] split = click.split("\\s+");
             String fSplit = split[0];
             String update = "UPDATE ITEMS SET FOUND = 'YES' WHERE ITEM_NAME =" + "'"+fsplit+"'";
            shoppingListDB.execSQL(update);
            Toast.makeText(getApplicationContext(),  " " + fSplit,3000).show();

    }

    });
view_list.setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3)
{
字符串单击=(addarraylist.get(arg2.toString());
字符串[]拆分=单击。拆分(\\s+);
字符串fSplit=split[0];
String update=“update ITEMS SET FOUND='YES'其中ITEM_NAME=“+””“+fsplit+””;
shoppingListDB.execSQL(更新);
Toast.makeText(getApplicationContext(),“”+fSplit,3000).show();
}
});

如何使用
notifyDataSetChanged
刷新列表视图?

清除作为适配器参数的Arraylist可能是一种简单的方法。再次加满并调用notifyDataSetChanged

addArrrayList.clear();
reFillYourArrayListWithUpdatedData(); /*first code part of your question*/
adapter.notifyDataSetChanged();
编辑

我认为问题在于

shoppingListDB.execSQL(update);
划船。你必须使用

public int update (String table, ContentValues values, String whereClause, String[] whereArgs)
而不是execSQL()

这是文件


否数据库中的更新成功,我想要的是一种获取新更新数据的方法。你能用最新版本的onItemClick block编辑你的答案吗?我放弃了,我已经坐在笔记本电脑上12个小时了,每次用户单击该项时,我都会调用光标。