2014-12-15 2 views
1

Я работаю над двумя списками в одном и том же действии, в котором есть 3 строки в 1-м, а 2-й список - пустой. Я хочу перетащить значения первого списка во второй список, когда любое значение будет нажато.Выполнение двух списков в одном кадре

listView1.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      // ListView Clicked item index 
      int itemPosition = position; 

      // ListView Clicked item value 
      String itemValue = (String) listView1 
        .getItemAtPosition(position); 


      secoundList.add(itemValue); 
      firstList.remove(position); 


      Toast.makeText(
        getApplicationContext(), 
        "Position :" + itemPosition + " ListItem : " 
          + itemValue, Toast.LENGTH_SHORT).show(); 


     } 

    }); 

Но каждый раз, когда я получаю ошибку в LogCat, что «содержание адаптера изменилось, но ListView didnot Получать никакого уведомления» об ошибках журнала кота, «убедитесь, что содержание адаптера не изменяется от фонового потока "

+0

Если вы хотите изменить любой вид списка, вам необходимо установить адаптер для просмотра списка. прочитать этот учебник он будет поможет вам http://www.vogella.com/tutorials/AndroidListView/article.html –

ответ

1

Вы должны вызвать этот метод после изменения списка.

listAdapter.notifyDataSetChanged(); 
0

Если я правильно понял ваш вопрос правильно, то вы ¨R пытаетесь выбранной ListItem из одного списка вы хотите показать, что выбранный элемент списка во втором списке.?

Я дам вам вопрос в соответствии с тем, что я понимаю.

так что прежде всего вам нужно инициализировать первый список с помощью элемента.

ListView listview1 = findViewBId(---------); 
ListView listview2 = findViewBId(---------); 

ArrayList<String> list1 = new ArrayList<String>(); 
list1.add("abc"); 
list1.add("pqr"); 
list1.add("pqr"); 
-------------------- 

ArrayList<String> list2 = new ArrayList<String>(); 
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(context, resource, list1); 
listView1.setAdapter(adapter1); 

ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(context, resource, list2); 
listView1.setAdapter(adapter2); 
listView1.setOnItemClickListener(this); 


onItemClick(AdapterView<?> parent, View view, int position, long id) { 

list2.add(list1.get(position)); 
adapter2.notifyDataSetChanged(); 

} 
+0

инлайн «MainActivity.this.runOnUiThread (новый Runnable() { \t \t \t \t общественности недействительным запуска() { \t \t \t \t Log.d ("UI нить", "Я поток пользовательского интерфейса"); \t \t \t \t adapter.notifyDataSetChanged(); \t \t \t \t}»Я использовал этот метод прямо ниже, когда адаптер обновляется но теперь проблема заключается в том, что значения не входят в список 2. –

+0

Я думаю, что вам не нужно вызывать runOnUIthread(). потому что u r уже работает над нитью ui. так что вам это не нужно. runOnUIthread() используется, когда u r делает это, работая в backgroung в asyn-задаче и работая над другим потоком, и вы хотите сразу показать значения в ui-потоке. PLZ попробуйте вышеупомянутый подход, он будет работать. –

+0

спасибо, что проблема решена полностью! –

Смежные вопросы