2011-06-13 54 views
1

我現在用的是下面這段代碼來填充我的ListView -的Android - ListView中得到填充兩次

setListAdapter(new NotifListAdapter(this)); 

我把這個在我活動的onCreate()方法,並在第一時間就被創建,它填充很好。但是當我回到這個活動時,它會在列表中顯示兩倍的行數!我檢查了我的數據庫,它絕對不是後端問題。另外,當我強制關閉活動並重新啓動它時,它會填充正常。任何人都可以提供對這個問題的見解嗎?

如果這是列表適配器 -

public class NotifListAdapter extends BaseAdapter { 
    public NotifListAdapter(Context context) { 
     mContext = context; 
    } 

    public int getCount() { 
     return rnList.size(); 
    } 


    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     NotifView nv; 

     RichNotification rn = rnList.get(position); 

     if (convertView == null) { 

      nv = new NotifView(mContext, rn.getSubject(), 
        rn.getContent(), rn.getDate()); 
     } else { 
      nv = (NotifView) convertView; 
      nv.setTitle(rn.getSubject()); 
      nv.setDialogue(rn.getContent()); 
      nv.setDate(rn.getDate()); 
     } 

     return nv; 
    } 

    /** 
    * Remember our context so we can use it when constructing views. 
    */ 
    private Context mContext; 

    @Override 
    public Object getItem(int position) { 
     return null; 
    } 

} 
+1

rnList在哪裏設置?這可能會被填充兩次嗎? – 2011-06-13 13:45:45

+0

唯一的建議是將Toast消息放入生命週期方法中,並放入getView()和getCount()中,看看命令 – damluar 2011-06-13 13:48:51

回答

9

適配器從rnList顯示數據:你可能添加到rnList新的對象,而不先清除它,這就是爲什麼你得到兩倍多行時你返回到活動。在向rnList添加數據之前,請致電rnList.clear();並且應該可能解決您的問題。

+0

如何像魅力一樣工作。謝謝! – Suchi 2011-06-13 15:31:17

+0

在我找到這個之前,我已經擰了2個多小時,謝謝! – 2013-03-21 22:18:42