我有一个要求,我想在列表视图中禁用项目。 说例如,我在列表视图中有5个项目,我只想启用1个项目。
注意:禁用意味着使项目变灰。
以下是我的代码:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity,android.R.layout.simple_list_item_1, movies);
我不想使用我们获得getView()
的自定义适配器。
有没有其他方法可以实现此功能?
答案 0 :(得分:1)
在适配器中有一个方法名称 isEnabled ,您可以覆盖。 每次调用getview都会调用此方法。只有在此函数返回true时才会触发 onclicklistener 。因此,请尝试在您的自定义适配器中执行此操作。
@Override
public boolean isEnabled(int position) {
if(YOUR CONDTITION){
return false;
}
return true;
}
没有适配器:
然后你需要通过在特定位置获取视图来禁用该项目。
答案 1 :(得分:0)
请为此方法 setOnItemSelectedListener
实施侦听器。因此,您可以禁用任何您想要的项目。
答案 2 :(得分:0)
您还可以使用以下方式禁用项目:
final Set<Integer> disabledPositions = new HashSet<Integer>();
disabledPositions.add(positionYouWantToDisable);
disabledPositions.add(positionYouWantToDisable);
disabledPositions.add(positionYouWantToDisable);
ListView listView = new ListView(this);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long arg3) {
if(!disabledPositions.contains(position) {
// do what you want
}
}
});
答案 3 :(得分:0)
试试这个:
final List<Integer> disabledItems = new ArrayList<Integer>();
disabledItems.add(0);
disabledItems.add(2);
lvMovies.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if (disabledItems.contains(arg2)) {
Toast.makeText(getApplicationContext(), "DISABLED", Toast.LENGTH_SHORT).show();
arg1.setEnabled(false);
} else {
Toast.makeText(getApplicationContext(), "NOT DISABLED", Toast.LENGTH_SHORT).show();
arg1.setEnabled(true);
}
}
});