2014-09-25 50 views
1

我正在使用滑動到解散庫,但應用程序崩潰後清單項被刷掉。我使用下面的代碼:Android的力量關閉使用滑動來關閉列表視圖

todolist = (ListView)findViewById(R.id.todo_items); 
     SwipeDismissListViewTouchListener touchListener = 
       new SwipeDismissListViewTouchListener(
         todolist, 
         new SwipeDismissListViewTouchListener.DismissCallbacks() { 
          @Override 
          public boolean canDismiss(int position) { 
           return true; 
          } 

          @Override 
          public void onDismiss(ListView listView, int[] reverseSortedPositions) { 
           for (int position : reverseSortedPositions) { 
            mAdapter.remove(mAdapter.getItem(position)); 
           } 
           mAdapter.notifyDataSetChanged(); 
          } 
         }); 
     todolist.setOnTouchListener(touchListener); 
     todolist.setOnScrollListener(touchListener.makeScrollListener()); 

該應用程序提供了一個UnsupportedOperationException異常在這條線:

com.example.todolist.ToDoListActivity$1.onDismiss(ToDoListActivity.java:81) 

我該如何解決這個問題?我指的是此代碼示例:

https://github.com/romannurik/Android-SwipeToDismiss/blob/master/src/com/example/android/swipedismiss/MainActivity.java

謝謝!

回答

2

您通過調用其中一個接受對象數組而不是List的構造函數,或者將其傳遞給一個不可變列表來創建ArrayAdapter。

嘗試改爲調用其中一個需要List的ArrayAdapter構造函數,並確保將其傳遞給一個可變的ArrayAdapter構造函數。這將允許您執行刪除操作。

從內部看,採用對象數組的ArrayAdapter構造函數將通過調用Arrays.asList(T ... array)在對象數組之外創建一個List,但List Arrays.asList返回值是不可變的。

舉個例子,考慮下面的數據:

String[] FRUIT = {"Apple", "Banana", "Pear"}; 

兩個以下將創建拋出UnsupportedOperationException異常適配器:

new ArrayAdapter<String>(context, 
    android.R.layout.simple_list_item_1, FRUIT); 

new ArrayAdapter<String>(context, 
    android.R.layout.simple_list_item_1, Arrays.asList(FRUIT)); 

而這個人會允許你修改適配器的列表:

new ArrayAdapter<String>(context, 
    android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(FRUIT))); 
+0

是的。這很好用!謝謝。 – 2014-09-25 05:07:29