2016-09-10 100 views
0

我想添加一個新的條目到我的列表視圖並刷新它仍然顯示在列表視圖中的舊條目。以前我是用ArrayAdapter我是能夠通過使用無法刷新ListView與SimpleAdapter

adapter.notifyDataSetChanged(); 

添加新條目之後刷新但是我無法使用以上SimpleAdapter的代碼。任何建議? 我已經嘗試了幾個解決方案,但迄今沒有任何工作。

下面是我使用的是不添加條目代碼:如果您beta3方法真的是你的函數將條目添加到您的ListView

void beta3 (String X, String Y){ 
    //listview in the main activity 
    ListView POST = (ListView)findViewById(R.id.listView); 
    //list = new ArrayList<String>(); 
    String data = bar.getText().toString(); 
    String two= data.replace("X", ""); 
    ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String, String>>(); 

    HashMap<String,String> event = new HashMap<String, String>(); 
    event.put(Config.TAG_one, X); 
    event.put(Config.TAG_two, two); 
    event.put(Config.TAG_three, Y); 
    list.add(event); 
    ListAdapter adapter = new SimpleAdapter(this, list, R.layout.list, 
      new String[]{Config.TAG_one, Config.TAG_two, Config.TAG_three}, 
      new int[]{R.id.one, R.id.two, R.id.three});   
    POST.setAdapter(adapter); 
} 
+0

好像的[本]重複(http://stackoverflow.com/questions/9733572/android-adding-extra-item-on-listview)。 你如何嘗試將項目添加到列表? – gus27

回答

0

:它會設置一個新的適配器每次打電話時都會列出一個新名單。所以這總是會導致一個ListView包含一個條目。在退出beta3方法後,對該列表的引用消失。

您必須重用list實例變量。將ArrayList<HashMap<String,String>> list放在課堂/活動範圍內,並將其初始化爲一次(例如onCreate())。

另一個問題是,您使用ListAdapter變量作爲參考SimpleAdapter實例。 ListAdapter是一個不提供notifyDataSetChanged方法的接口。您應該使用SimpleAdapter變量。

下面是一個例子:

public class MyActivity { 

    ArrayList<HashMap<String,String>> list; 
    SimpleAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ... 
     ListView POST = (ListView)findViewById(R.id.listView); 
     list = new ArrayList<HashMap<String, String>>(); 
     adapter = new SimpleAdapter(this, list, R.layout.list, 
      new String[]{Config.TAG_one, Config.TAG_two, Config.TAG_three}, 
      new int[]{R.id.one, R.id.two, R.id.three});   
     POST.setAdapter(adapter); 
    } 


    void beta3 (String X, String Y){ 
     String two = ""; // adapt this to your needs 
     ... 
     HashMap<String,String> event = new HashMap<String, String>(); 
     event.put(Config.TAG_one, X); 
     event.put(Config.TAG_two, two); 
     event.put(Config.TAG_three, Y); 
     list.add(event); 
     adapter.notifyDataSetChanged(); 
    } 

} 
+0

我的項目從Android手機的數據庫中獲取數據/字符串,並將數據/字符串傳遞給beta3()並在列表視圖中顯示它。 你能給我一些示例代碼,以便我可以使用它嗎? – Lockon

+0

@Lockon:添加了示例代碼。 – gus27

+0

謝謝@ gus42讓我試試 – Lockon