自定义列表视图(或适配器),允许更新行而不是添加一行。 (机器人)

时间:2015-07-17 05:30:32

标签: android-listview

我有一个列表视图。 现在,我正在使用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相同。如果没有,我想允许添加新行。

1 个答案:

答案 0 :(得分:1)

逻辑处理永远不应该在getView方法中完成,因为它被称为多个随机时间,这导致条件返回false的不一致,即使它是一个真实的语句。

假设您MyAdapter.java延长BaseAdapter BaseAdapter中还有两个可以覆盖的方法

  1. BaseAdapter.getViewTypeCount()
  2. BaseAdapter.getItemViewType(int position)
  3. 您的逻辑应放在getItemViewType(int position)内,相应的视图修改应该在其中进行。

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

    希望这有帮助