2013-07-29 3 views
11

Как отключить определенный элемент списка в представлении списка в android? Я имею в виду, что если я выбрал какой-либо элемент из списка, этот элемент должен быть отключен, что означает, что элемент не должен быть снова выбран. Как это сделать?Как отключить определенный элемент списка в представлении списка в android?

Предложения, пожалуйста

Спасибо за ваше драгоценное время! ..

+0

вы используете пользовательский адаптер для ListView ?? –

+0

@ArmaanStranger yes – prabu

+0

Затем вы должны сохранить, какой элемент выбран, а затем изменить view.enable = false. и когда вы загружаете или обновляете listview, проверьте одно условие: если элемент просмотра равен щелкнутому элементу, отключите его. –

ответ

20

попробуйте использовать этот код в setOnItemClicklistener()

if(listview.getChildAt(selectedPosition).isEnabled()) 
{ 
    listview.getChildAt(selectedPosition).setEnabled(false); 
} 
9

Попробуйте перекрывая BaseAdapter.isEnabled() в адаптере, и вызвать этот метод из вашего onItemClick().

0

Когда вы нажимаете на элемент, он задает логическое значение. И какой метод использовал бы этот элемент, чтобы проверить, вызвано ли булевское значение, например, false. Затем в вашей части с щелчком используйте BaseAdapter.isEnabled() = false;

Или только с этим булевым они никогда не смогут его снова щелкнуть.

0
mlistView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{ 

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
{ 
    arg1.setEnabled(false); 
} 
} 
17

Когда вы передаете список элементов данных для BaseAdapter, добавить поле в элементе классе этого списка под названием isEnabled и установить его true/false по мере необходимости, а затем переопределить isEnabled метод BaseAdapter как это:

@Override 
public boolean isEnabled(int position) { 

    return list.get(position).isEnabled; 
} 

где list - это ваш список объектов элементов данных.

0

Чтобы отключить элементы списка при создании списка, вы должны подклассом из ArrayAdapter. Вы должны переопределить следующие методы: IsEnabled (интермедиат позиция)

class MenuAdapter extends ArrayAdapter<String> { 

public boolean isEnabled(int position) { 
    // return false if position == positionYouWantToDisable 
} 

}

Или в классе активность

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); 
} 

}

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