Listview+;适配器-删除项目并刷新,不工作-Android
这个问题与此类似 * 这(相同,但我在这里添加了完整代码,以检查我的代码中是否有任何问题): 请给我一个代码示例 我可以打电话给意图刷新我的列表吗 我无法使用以下命令刷新适配器:Listview+;适配器-删除项目并刷新,不工作-Android,android,android-listview,adapter,Android,Android Listview,Adapter,这个问题与此类似 * 这(相同,但我在这里添加了完整代码,以检查我的代码中是否有任何问题): 请给我一个代码示例 我可以打电话给意图刷新我的列表吗 我无法使用以下命令刷新适配器: adapter.notifyDataSetChanged(); 我试过: adapter.remove(adapter.getItem(pos)); 但是没有成功,只有一次(奇怪…) 还有另一个答案: Call that Activity once again Using Intent sombody可以给我这
adapter.notifyDataSetChanged();
我试过:
adapter.remove(adapter.getItem(pos));
但是没有成功,只有一次(奇怪…)
还有另一个答案:
Call that Activity once again Using Intent
sombody可以给我这个(或适配器/游标)的确切代码吗
我尝试了几个小时,但没有成功
我的完整代码:
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate(SavedInstanceState);
setContentView(R.layout.personalmessageview);
headtitle= getIntent().getExtras().getString("head");
setTitle(headtitle);
personalresults = getIntent().getExtras().getStringArrayList("personalres");
personalresultswithtime = getIntent().getExtras().getStringArrayList("personalrestime");
// setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,personalresults));
ListView list = (ListView)findViewById(R.id.listview_personal);
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, personalresults);
list.setAdapter(adapter);
registerForContextMenu(list);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
String time = personalresultswithtime.get(pos).toString();
Show_Alert_box(v.getContext(),"Please select action.",time,pos);
return true;
}
});
public void Show_Alert_box(Context context, String message,String time,int position)
final String timestamp = time;
final int pos = position;
final AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle(getString(R.string.app_name));
alertDialog.setButton("Delete", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try
{
db = databaseHelper.getWritableDatabase();
db.delete("messages","timestamp" + "=?", new String[] { timestamp });
Log.d("DB"," delete! ");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(PersonalMessageView.this, android.R.layout.simple_list_item_1, personalresults);
adapter.remove(adapter.getItem(pos)); //not working t all! why ?
list.notify();
list.invalidate();
personalresults.remove(pos);
personalresultswithtime.remove(pos);
adapter.notifyDataSetChanged();
db.close();
}
catch(Exception e)
{
}
} });
alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
} });
alertDialog.setMessage(message);
alertDialog.show();
}
创建时受保护的void(Bundle SavedInstanceState){
super.onCreate(SavedInstanceState);
setContentView(R.layout.personalmessageview);
headtitle=getIntent().getExtras().getString(“head”);
标题(标题);
personalresults=getIntent().getExtras().getStringArrayList(“personalres”);
personalresultswithtime=getIntent().getExtras().getStringArrayList(“personalrestime”);
//setListAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,personalresults));
ListView列表=(ListView)findViewById(R.id.ListView\u personal);
//ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,personalresults);
list.setAdapter(适配器);
registerForContextMenu(列表);
list.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
长点击(AdapterView av、View v、int pos、long id){
字符串时间=personalresultswithtime.get(pos.toString();
显示警告框(v.getContext(),“请选择操作”,时间,位置);
返回true;
}
});
公共无效显示警告框(上下文上下文、字符串消息、字符串时间、整数位置)
最终字符串时间戳=时间;
最终int pos=位置;
final AlertDialog AlertDialog=新建AlertDialog.Builder(context.create();
setTitle(getString(R.string.app_name));
alertDialog.setButton(“删除”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface dialog,int which){
尝试
{
db=databaseHelper.getWritableDatabase();
db.delete(“消息”,“时间戳”+“=?”,新字符串[]{timestamp});
Log.d(“DB”,“delete!”);
ArrayAdapter=新的ArrayAdapter(PersonalMessageView.this,android.R.layout.simple\u list\u item\u 1,personalresults);
adapter.remove(adapter.getItem(pos));//完全不工作!为什么?
list.notify();
list.invalidate();
个人结果。移除(pos);
personalresultswithtime.remove(pos);
adapter.notifyDataSetChanged();
db.close();
}
捕获(例外e)
{
}
} });
alertDialog.setButton2(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(DialogInterface dialog,int which){
alertDialog.disclose();
} });
alertDialog.setMessage(消息);
alertDialog.show();
}
在您的onClick of对话框中,您正在处理一个全新的适配器。在onClick()中没有适配器与listView的关联,您应该说list.setAdapter(Adapter);在onClick()方法中,或使适配器全局化。而不是使用
adapter.remove(adapter.getItem(pos));
使用
string str=list.getItemAtPosition(index).toString();
personalresults.remove(str);
adapter.notifyDataSetChanged();