2014-06-27 33 views
1

我嘗試更新我的listview值時遇到問題。我有一個由編輯文本組成的自定義適配器。當我點擊一個編輯文本時,我會顯示一個對話框(在另一個類中),並向他傳遞像位置,arralist和其他類似的值。更新列表查看其他類中的項目

在對話框類我有這個方法

public void updateValue(String newValue) { 
    MyObject object = arrayList.get(position); 
     object.valueFile = newValue; 
    arrayList.set(position, object); 
    MyAdapter adapter = new MyAdapter(context, 0, arrayList); 
    adapter.notifyDataSetChanged(); 
} 

此方法,因爲新的值是否正確插入到數組列表,但編輯文本的文本不更新,但它僅更新時,我滾動,然後我回到那個editt文本。爲什麼?我該如何解決?哪裏有問題?

+0

不是一個好的做法,以更新的數據,但真的很容易,你可以讓你的適配器一個公共靜態類變量,做MyClass.adapter.notifyDataSetChanged();另一種方式創建接口是一種很好的方式,但要編寫更多的代碼 –

+0

爲什麼不是一個好的做法? – user3717163

+0

,因爲已知靜態字段是它們在整個應用生命週期中存在的許多錯誤的來源。不能垃圾收集 –

回答

0

你不能在第二次New()你的適配器。該適配器只能使用New()一次。
如果要更新列表視圖,你需要在你的ArrayList

ArrayList<yourType> arrayList = new ArrayList<yourType>(); 
//Init data for your arrayList 
//... 
//Init your adapter 
MyAdapter adapter = new MyAdapter(context, 0, arrayList); 

//update item of listview 
public void updateValue(String newValue) { 
    arrayList.get(position).valueFile = newValue; 
    adapter.notifyDataSetChanged(); 
} 
+0

ArrayList值已用set()方法更新。我需要通知適配器上的更改。 – user3717163

+0

當New()適配器(第一次)是相同的(相同的內存)時,您需要確保arrayList在updateValues方法和arrayList中。並嘗試刪除MyAdapter適配器= new MyAdapter(...) – tana

+0

我添加了我的代碼,以顯示如何更新列表視圖中的項目 – tana

相關問題