我有一个列表视图。
现在,我正在使用switch-case,我将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
相同。如果没有,我想允许添加新行。
答案 0 :(得分:1)
逻辑处理永远不应该在getView方法中完成,因为它被称为多个随机时间,这导致条件返回false的不一致,即使它是一个真实的语句。
假设您MyAdapter.java
延长BaseAdapter
BaseAdapter
中还有两个可以覆盖的方法
您的逻辑应放在getItemViewType(int position)
内,相应的视图修改应该在其中进行。
getViewTypeCount()
- 返回将由getView(int,View,ViewGroup)创建的视图类型的数量。每种类型代表一组可在getView(int,View,ViewGroup)中转换的视图。如果适配器始终为所有项返回相同类型的View,则此方法应返回1
希望这有帮助