【发布时间】:2016-06-23 11:09:04
【问题描述】:
我正在尝试禁用 listview 中的某些项目,但不能这样做。 我有布尔数组
private boolean[] array; //10 items all false, and some of them true
在我尝试的代码中
for(int i=0;i<array.length();i++){
if(!array[i]){
listview.getChildAt(i).setEnabled(false);
}
}
但我总是在字符串“listview.getChildAt()”上得到 nullpointerexception 如果像这样写
if(listview.getChildAt(i)!=null){ //在这里做代码 }
比我看到字符串“getChildAt(i).setEnabled(false)”没有入口 我对 getChildAt 不太了解,但我正在考虑如何按位置获取项目。任何人都可以帮助我怎么做? 列表视图适配器
public class LevelAdapter extends ArrayAdapter<String> {
public LevelAdapter(Activity context, ArrayList<String> le, ArrayList<Integer> co, boolean[] bools) {
super(context, R.layout.listviewitem, le);
this.context = context;
this.l = le;
this.s = co;
this.boolStates = bools;
}
@Override
public View getView(final int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.listviewitem, null, true);
tvL = (TextView) rowView.findViewById(R.id.l);
tvC = (TextView) rowView.findViewById(R.id.s);
tvL.setText(""+l.get(position));
tvCt.setText(""+s.get(position) + "/3");
return rowView;
}
}
问候,彼得。
解决方案
在适配器检查中
if(lvl[position]==false){
rowView= inflater.inflate(R.layout.listviewitemdisabled, null, true);
rowView.setEnabled(false);
}else
{
rowView= inflater.inflate(R.layout.listviewitem, null, true);
}
当点击
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (view.isEnabled()) {
// do our code here
感谢这个简单的解决方案
【问题讨论】:
-
你如何在这个列表视图中使用适配器?
-
是的,抱歉,我现在将其添加到 cde