2015-07-27 5 views
2

У меня есть список, что каждый элемент в списке содержит флажок. Моя проблема в том, что я хочу установить только один флажок, выбранный за раз. Еще одна проблема, когда я установить флажок в порядке 3, а затем, когда я прокрутки вверх и назад, флажок в другом порядке, 5 или 8 случайно Не могли бы вы помочь мне решить эту проблемуНевозможно установить только один флажок, выбранный в виде списка

+0

Это связано с тем, как работает механизм рециркуляции списков. Вам нужно разместить соответствующий код адаптера. – Raghunandan

+0

Возможно, вы хотите использовать переключатель, а не флажок. Кроме того, чтобы получить лучший ответ, разместите соответствующий код. –

+0

возьмите boolean в объекте listview для проверки и снимите галочку и измените его значение, если отмечено true и false, если снимите флажок и вместо отметки android установите флажок, скажем, checked.png и unchecked.png используйте его в соответствии с состоянием проверки. –

ответ

0

Установите свой ListView в:

lvSelectLocation.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
ArrayAdapter<String> adptr = new ArrayAdapter<String>(Location.this, android.R.layout.simple_list_item_single_choice, locationList); 

Ручка onItemClick только:

lvSelectLocation.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
        Selected = arg0.getItemAtPosition(arg2).toString(); 
      } 
     }); 

Android автоматически перерабатывают вид ListView так, выбран вариант рецикл при прокрутке. Для этого вам нужно установить выбранный элемент списка в ArrayList.

+0

Большое вам спасибо, приятель –

+0

Добро пожаловать. Если ответ полезен, выберите правильный ответ. – SANAT

+0

Как я могу справиться с этим в случае RecyclerView –

0

Вы можете использовать демонстрационную версию API, чтобы понять лучший способ для этой реализации. Посмотрите на this. Существует опция CHOCIE_MODE со списком, который вы можете установить в CHOCIE_MODE_SINGLE. Простой код такой:

public class List10 extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_single_choice, GENRES)); 

     final ListView listView = getListView(); 
     listView.setItemsCanFocus(false); 
     listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    } 
    private static final String[] GENRES = new String[] { 
     "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama", 
     "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller" 
    }; 
}