2015-02-05 69 views
1

我使用xml中的條目將項目添加到ListView。但由於某種原因,當我動態地添加項目到ListView的條目項目被刪除。添加新項目時刪除ListView xml條目

有人可以解釋爲什麼嗎?

代碼:

list_view_fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:entries="@array/listview_array" 
    android:id="@+id/listview1"> 
</ListView> 

ListViewFragment.java

public class ListViewFragment1 extends Fragment { 

    protected ArrayAdapter<String> adapter1; 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
      @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  

     return inflater.inflate(R.layout.list_view_fragment, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     adapter1 = new ArrayAdapter<String>(getActivity(), R.layout.items);  
    } 

    public void changeText(String data){ 
     ListView list1 = (ListView) getActivity().findViewById(R.id.listview1); 
     list1.setAdapter(adapter1); 
     adapter1.add(data); 
     adapter1.notifyDataSetChanged(); 
    } 
} 

我想我的時候動態增加使用changeText(String data)我創建一個新的ListView,從刪除所有條目的項目xml。

有人可以幫忙嗎? - 我如何保存我的作品?

+0

其中changeText從哪裏調用? 如果你有更多的條目,你應該使用「持有人」...... 你也可以考慮在onActivityCreated中創建ListView並且只需添加並通知適配器... – 2015-02-05 18:33:03

+0

它從MainActivity調用。但是這是導致錯誤的changeText中的代碼。 – user2456977 2015-02-05 18:44:15

+0

當我將這兩行添加到onActivityCreated時:ListView list1 =(ListView)getActivity()。findViewById(R.id.listview1); list1.setAdapter(adapter1); - 我原來的條目甚至沒有加載 – user2456977 2015-02-05 18:51:38

回答

0

嘗試修改此

public void changeText(String data){ 
    ListView list1 = (ListView) getActivity().findViewById(R.id.listview1); 
    list1.setAdapter(adapter1); 
    adapter1.add(data); 
    adapter1.notifyDataSetChanged(); 
} 

這個

public void changeText(String data){ 
    adapter1.add(data); 
    adapter1.notifyDataSetChanged(); 
} 

,改變你的onCreateView

@Override 
public View onCreateView(LayoutInflater inflater, 
     @Nullable ViewGroup container, @Nullable Bundle savedInstanceState){  

    adapter1 = new ArrayAdapter<String>(getActivity(), R.layout.items); 
    ListView list1 = (ListView) getActivity().findViewById(R.id.listview1); 
    list1.setAdapter(adapter1); 
    return inflater.inflate(R.layout.list_view_fragment, container, false); 
} 

代碼沒有經過測試。讓我知道如果它不起作用。

+0

我原來的條目甚至沒有加載,當我這樣做。奇怪。 ---應該從這個來源出現的條目:android:entries =「@ array/listview_array」----就好像一個新的ListView被創建並且刪除了我的舊ListView – user2456977 2015-02-05 18:52:13

+0

可能與你有關係定義條目在XML中。你可以動態添加它們嗎? @ user2456977 – Marcus 2015-02-05 18:54:11

+0

我當然可以,但我只想知道爲什麼我不能動態添加,也可以通過xml – user2456977 2015-02-05 18:55:39