2013-12-08 72 views
0

嗨,我想添加一個項目到我的陣列適配器,我使用下面的代碼,但是當我點擊添加按鈕時,我得到了一個力量關閉我做錯了什麼? (我正在與列表片段工作)將項目添加到列表視圖

public class list extends ListFragment { 
    String[] str = {""}; 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     final View v = inflater.inflate(R.layout.main, null); 
     Button add = (Button) v.findViewById(R.id.button1); 
     final ArrayAdapter<String> ar = new ArrayAdapter<String>(getActivity(), R.layout.listback_layout, str); 
     final EditText enter = (EditText) v.findViewById(R.id.editText1); 
     add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       ar.add(enter.getText().toString()); 
       ar.notifyDataSetChanged(); 
       ar.notifyDataSetInvalidated(); 
      } 
     }); 
     setListAdapter(ar); 
     return v; 

    } 
} 

下面是該日誌:

12-08 16:50:20.801: E/AndroidRuntime(1832): FATAL EXCEPTION: main 
12-08 16:50:20.801: E/AndroidRuntime(1832): java.lang.UnsupportedOperationException 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at java.util.AbstractList.add(AbstractList.java:404) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at java.util.AbstractList.add(AbstractList.java:425) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.widget.ArrayAdapter.add(ArrayAdapter.java:179) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at mr.chag.va.lagar.lagari.mohasebelagari$1.onClick(mohasebelagari.java:27) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.view.View.performClick(View.java:4084) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.view.View$PerformClick.run(View.java:16966) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.os.Handler.handleCallback(Handler.java:615) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.os.Looper.loop(Looper.java:137) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
12-08 16:50:20.801: E/AndroidRuntime(1832):  at dalvik.system.NativeStart.main(Native Method) 

回答

1

。這是因爲,一個ArrayAdapter,上由陣列被初始化,該陣列轉換成AbstractList中(列表)這是不能修改的。

解決方案 - 在初始化ArrayAdapter時使用ArrayList來代替使用數組。

Examaple-

String[] array = {"a","b","c","d","e","f","g"}; 
ArrayList<String> lst = new ArrayList<String>(); 
lst.addAll(Arrays.asList(array)); 
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
android.R.layout.simple_list_item_1, lst);