Java 在用户单击项目后更新listview
我有一个arraylist存储数据库中的数据并将其显示在listview中,当用户单击某个项目时,数据库中的数据将更新,我想知道如何刷新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()){
//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个小时了,每次用户单击该项时,我都会调用光标。