列表视图+适配器-删除项目和刷新,不工作- Android



这个问题是类似的* Android -列表视图删除项目和刷新和这个(相同的,但我在这里添加了完整的代码来检查我的代码中是否有任何问题):

请给我代码示例…

我可以调用intent来刷新我的list吗?

我不能刷新我的适配器:

adapter.notifyDataSetChanged();

我试着:

adapter.remove(adapter.getItem(pos));

但没有成功,只是一次(奇怪…)。

这里还有一个答案:

Call that Activity once again Using Intent

谁能给我这个(或适配器/光标)的确切代码?

我试了几个小时都没有成功。

我的完整代码:

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();
}

在您的onClick对话框中,您正在处理一个全新的适配器。没有适配器的关联(在onClick()中)到listView,或者你应该说list.setAdapter(adapter);

代替

adapter.remove(adapter.getItem(pos));
使用

string str=list.getItemAtPosition(index).toString();
personalresults.remove(str);
adapter.notifyDataSetChanged();

最新更新