Ответ 1
попробуйте использовать этот код в setOnItemClicklistener()
if(listview.getChildAt(selectedPosition).isEnabled())
{
listview.getChildAt(selectedPosition).setEnabled(false);
}
Как отключить конкретный элемент списка в режиме просмотра списка в Android? Я имею в виду, что если я выбрал какой-либо элемент из списка, этот элемент должен быть отключен, что означает, что элемент не должен быть снова выбран. Как это сделать?
Предложения пожалуйста
Спасибо за ваше драгоценное время!..
попробуйте использовать этот код в setOnItemClicklistener()
if(listview.getChildAt(selectedPosition).isEnabled())
{
listview.getChildAt(selectedPosition).setEnabled(false);
}
Когда вы передаете список элементов данных в BaseAdapter
, добавьте поле в этот класс элементов списка под названием isEnabled
и установите его в true
/false
по мере необходимости, затем переопределите isEnabled
метод BaseAdapter
вот так:
@Override
public boolean isEnabled(int position) {
return list.get(position).isEnabled;
}
где list
- ваш список объектов элементов данных.
Попробуйте переопределить BaseAdapter.isEnabled()
в вашем адаптере и вызовите этот метод из onItemClick()
.
Когда вы нажимаете на элемент, он задает логическое значение. И какой метод использовал бы этот элемент, чтобы проверить, вызвано ли булевское значение, например, false. Затем в вашей части с щелчком используйте BaseAdapter.isEnabled() = false;
Или только с этим булевым они больше не смогут его снова щелкнуть.
mlistView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3)
{
arg1.setEnabled(false);
}
}
Чтобы отключить элементы списка при создании списка, вы должны подклассом из ArrayAdapter. Вы должны переопределить следующие методы: isEnabled (int position)
class MenuAdapter extends ArrayAdapter<String> {
public boolean isEnabled(int position) {
// return false if position == positionYouWantToDisable
}
}
Или в классе Activity
public class MainActivity extends Activity {
ListView listview;
ArrayAdapter<String> arrayadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView)findViewById(R.id.listView1);
button = (Button)findViewById(R.id.button1);
arrayadapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, subjects);
listview.setAdapter(arrayadapter);
listview.getChildAt(1).setEnabled(false);
}
}