2017-06-20 277 views
0

我試圖製作一個AlertDialog,它可以讓您選擇刪除您在ListView中單擊的項目。我有兩個選項的AlertDialog,但是當我點擊它們時,AlertDialog就關閉了,沒有任何事情發生。 代碼如下,謝謝。
另外,當我按下正面按鈕(應刪除該項目),我再次按下該項目的應用程序崩潰。從arraylist中刪除項目

private void registerClickCallBack() { 
    ListNote = (ListView) findViewById(R.id.lv1); 
    ListNote.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> paret, View viewClicked, final int position, long id) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setMessage("Notitie verwijderen?") 
        .setCancelable(false) 
        .setPositiveButton("Ja", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          lv.remove(position); 
         } 
        }) 
        .setNegativeButton("Nee", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 

      ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, lv); 
      ListNote.setAdapter(adapter); 
     } 
    }); 
}` 
+0

你試過調試你的程序嗎?這條線是否到達? 'lv.remove(position)'' –

+0

'lv.remove(position)'中的'lv'是什麼? – Zakir

+0

@Zakir lv是arralist的名字。沒想到添加了我製作陣列列表的部分 –

回答

-1

我相信你正在尋找arrayList.RemoveAt(指數)

您正試圖arrayList.Remove(對象)

您正在試圖刪除的對象是一個名爲INT「位置',它不存在於你的arrayList(lv)中,所以不會拋出異常。

刪除對象在特定索引處和刪除特定對象之間有區別。取決於你傳遞的參考。

編輯:試圖澄清

+0

您確定'removeAt'?請參閱[this](https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#remove(int)),'RemoveAt'您在android中使用C#嗎? –

+0

我有一個沒有alertdialog的工作代碼。在這段代碼中,我也使用了lv.remove(position),它工作。所以我不認爲這可能是問題 –

0

我已經想通了。我忘記編輯onclick方法中的listview。所以數組列表是空的,但值仍然在列表視圖中。我移動了arrayadapter,現在它工作正常。