【发布时间】:2014-03-26 07:32:38
【问题描述】:
在我的应用程序中,我使用自定义 ArrayAdapter 从 ArrayList 填充 ListView。 在 ArrayList(In the object) 的每一行中都有一个 Flag(boolean)。如果将其标记为 true,则填充此行,否则什么也不做。
假设:-(一个包含一个字符串和一个布尔值的类,比如classA)
ArrayList<classA> listA
现在只想为对象中布尔类型为 true 的 ArrayList(此处为 listA) 的那些行填充 ListView(此处为 classA 布尔值)
我试试这个:-
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (listA.get(position).isFlagChanged()) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(rowResourceId, parent, false);
TextView tViewProNameFrmLstViewBasket = (TextView) rowView.findViewById(R.id.tView);
return rowView;
}
return null;
}
在这种情况下,它会抛出 nullPointerException。
我也试试这个:-
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(rowResourceId, parent, false);
if (listA.get(position).isFlagChanged()) {
TextView tViewProNameFrmLstViewBasket = (TextView) rowView.findViewById(R.id.tView);
return rowView;
}
return rowView;
}
但它也为 false Flag 绘制视图,但内容为空。
【问题讨论】:
-
从 ArrayList 中删除标志设置为
false的所有对象... -
您可以仅填充数组列表所需的数据。如果数据有任何变化,你可以通知datasetchanged方法。
-
你在 textview 中哪里设置你的 arraylist 数据?
-
@GopalRao ...此外,我还需要做一些其他任务,因此我无法删除那些标志为假的对象,或者我没有创建其他仅包含真标志对象的数组列表
-
@VinitVikash 嗯……我没听懂你在说什么。您可以创建一个新的 ArrayList 并将其标志设置为
true的所有对象添加到此列表中,并将此列表用作您的ListView的数据集...
标签: android android-listview android-arrayadapter