2016-08-24 2 views
2

Я создал простой список выбора нескольких вариантов с использованием адаптера массива. Я хочу установить цвет фона определенного элемента списка. Но предположим, что я выбираю 2 элемента среднего фонового набора, а также устанавливаю 12-ю позицию и 22 позиции, такие как мудрый, выбранный автоматически. пожалуйста, предложите мне проблему.Множественный выбор в listview

Код Черный.

public class MainActivity extends Activity { 

ListView lvCountry; 

ArrayList<Integer> list = new ArrayList<Integer>(); 
String[] country = { "India", "USA", "Russsia", "China", "Pakistan", 
     "Canada", "UK", "arcot", "vellore", "gudiyattam", "arani", 
     "palani", "chennai", "padi", "velacherry", "ambattur", 
     "ambatttur ot", "maduravoyal", "guindy" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    lvCountry = (ListView) findViewById(R.id.listView1); 
    // Array adapter 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
      MainActivity.this, android.R.layout.simple_list_item_1, country); 
    lvCountry.setAdapter(arrayAdapter); 

    // list selection part 
    lvCountry.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      // color selection select item 
      arg1.setBackgroundColor(Color.GRAY); 
     } 
    }); 
}} 
+0

вы должны сделать это в адаптере –

+0

списке следует пройти через это это поможет вам http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html – sushildlh

+0

~ arg1 .setBackgroundColor (Color.GRAY); ~ когда item set bgcolor они выбирают несколько элементов, пожалуйста, помогите и исправьте проблему и предложите мне – wingsraam

ответ

1

на самом деле, в чем проблема, когда вы проводите ListView пунктов являются shuffling.to избежать этой проблемы, затронутые в ListView Scrollview. если вы хотите получить образец кода, который я могу предоставить.

+0

, пожалуйста, дайте мне пример кода sir @Sandeep Kumar – wingsraam

+0

проверьте ниже пост xml file & javafile –

+0

проверьте ниже пост xml file & javafile –

0

Создайте свой собственный адаптер, в котором каждый элемент имеет флаг «selected», по умолчанию очищен. В флажке установленного клика для данного элемента и принудительной перерисовки. Вы должны использовать RecuclerView, потому что он работает быстрее. Когда вид завышена, проверьте флаг выбора и установки фона соответственно

+0

Вы не ответили на его вопрос – Alexander

0

XML файл

 <ScrollView 
      android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginBottom="5dp" 
    android:scrollbars="none" 
    android:visibility="gone"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <ListView 

      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="1dp" 
      android:scrollbars="none" 
      android:visibility="visible" /> 
    </LinearLayout> 

</ScrollView> 

Java класс

listview.setAdapter(agentRequestAdapter); 

    setListViewHeightBasedOnChildren(lvAgntRqstView); 
     //////////////////////////// 

    private static void setListViewHeightBasedOnChildren(ListView myListView) { 
    try { 
     ListAdapter myListAdapter = myListView.getAdapter(); 
     if (myListAdapter == null) { 
      //do nothing return null 
      return; 
     } 
     //set listAdapter in loop for getting final size 
     int totalHeight = 0; 
     for (int size = 0; size < myListAdapter.getCount(); size++) { 
      View listItem = myListAdapter.getView(size, null, myListView); 
      listItem.measure(0, 0); 
      totalHeight += listItem.getMeasuredHeight(); 
     } 
     //setting listview item in adapter 
     ViewGroup.LayoutParams params = myListView.getLayoutParams(); 
     params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1)); 
     myListView.setLayoutParams(params); 
     // print height of adapter on log 
     Log.i("height of listItem:", String.valueOf(totalHeight)); 


    } catch (NullPointerException e) { 

    } 
} 
0

Как и в этом ответе по bhatt4982, вы можете установить атрибут, чтобы сделать выбор доступный для выбора нескольких записей в списке:

Сначала вы можете установить в спискеView как в этом примере

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    listView.setItemCanFocus(false); 

Во-вторых, вы можете объявить его в своем макете или в своем макете_simple_list_item_1.xml. Пример:

<ListView 
    ... 
    android:background="@drawable/your_drawable" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"/> 

И тогда вы можете установить фон в пользовательском Drawable.

Source

+0

arg1.setBackgroundColor (Color.GRAY); // этот код реализует, когда конкретный элемент нажимает, чтобы установить bgcolor и автоматически другой элемент selected.pls help – wingsraam

+0

Привет, у меня есть один запрос о Multiselection в Listview на экране. У меня есть 20 элементов, добавленных в listview, но на текущем экране отображаются только 7 элементов, когда i прокрутите список, за которым он будет следовать, теперь появится мой запрос, когда я многократно выбираю такие элементы, как 2,3,6, которые он выбрал на текущем экране, но в то же время после второй страницы (прокрутка вниз) элементы выбираются без моего ведома (для Ex: экран 1 имеет 7 элементов, но мой выбор составляет всего 2,3,6, за исключением экрана 2 (при прокрутке вниз) выбрано 9,10,13, я не знаю, почему этот элемент выбран на экране 2), как можно u решить эти проблемы? – wingsraam

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