自定义Listview(或Adapter),允许更新一行而不是添加一行.(Android)



我有一个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扩展BaseAdapterBaseAdapter中还有另外两个方法可以被覆盖

  1. BaseAdapter.getViewTypeCount ()
  2. BaseAdapter。getItemViewType (int位置)

你的逻辑应该放在getItemViewType(int position)中,相应的视图修改应该在里面完成。

getViewTypeCount() -返回getView(int, View, ViewGroup)创建的视图类型的个数。每种类型代表一组可以在getView(int, View, ViewGroup)中转换的视图。如果适配器总是为所有项返回相同类型的View,则此方法应该返回1

希望能有所帮助