我有一个listview。现在,我正在使用开关情况下,我比较getView()
方法的position
与JSON响应形式从服务器获得的id。设id为myobjectarraylist.get(poisition).getIDForComparison
。 Myadapter.java
ArrayList<MyObject> myobjectarraylist;
int counter = 0;
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
switch(myobjectarraylist.get(poisition).getIDForComparison){
case x:
if (myobjectarraylist.get(position).getIDForComparison) == myobjectarraylist.get(nextposition).getIDForComparison){
"update the same row by concatenating new text with the exisiting"
}
else{
"insert next row"
}
}
}
所以,基本上我需要继续收集信息从我的json对象在同一行,直到myobjectarraylist.get(poisition).getIDForComparison
是相同的当前和下一个位置。如果没有,我希望允许添加新行。
逻辑处理永远不应该在getView方法中进行,因为它被随机调用了多次,这会导致条件返回false的不一致,即使它是一个真语句。
假设您的MyAdapter.java
扩展BaseAdapter
BaseAdapter
中还有另外两个方法可以被覆盖
- BaseAdapter.getViewTypeCount ()
- BaseAdapter。getItemViewType (int位置)
你的逻辑应该放在getItemViewType(int position)
中,相应的视图修改应该在里面完成。
getViewTypeCount()
-返回getView(int, View, ViewGroup)创建的视图类型的个数。每种类型代表一组可以在getView(int, View, ViewGroup)中转换的视图。如果适配器总是为所有项返回相同类型的View,则此方法应该返回1
希望能有所帮助