2012-01-01 92 views
0

這個問題是類似於這個 * Android - Listview delete item and Refresh 和這(同樣,但我在這裏添加完整的代碼來檢查,如果我在我的代碼中有任何問題):Listview + Adapter - 刪除項目和刷新,不工作 - Android

請給我代碼示例。 。 。

我可以打電話來刷新我的清單嗎?

我無法刷新我的適配器:

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

回答

0

內,您的對話框的onClick,你正在處理一個全新Adapter.There沒有適配器accociation(內部的onClick())到ListView要麼你應該說名單.setAdapter(適配器);在onClick()方法內或使適配器成爲全局。

0

而是採用

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

使用

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