如何在不创建新的适配器等的情况下更新ListView中的ListItem

时间:2016-05-19 12:28:01

标签: java android arrays json listview

我通过Volley获取我的数据信息(基于JSON),然后将其与GSON映射到我的DataModel。 JSON,例如包含包含其他数组的数组。 我将呈现一个Array的结果,如果我单击List Item,则Items应该更改以引用下一级Array。

我正在寻找一种通用解决方案来点击各种ListView而无需创建新的适配器等。

array1:
   - item
   - item
   - item
   - array2:
      - item
      - item
      - item
      - array3
        - item
        - item
        - item

3 个答案:

答案 0 :(得分:1)

Just add a new item iten in adapter object and call adapter.notifyDatasetChanged()

答案 1 :(得分:0)

您可以实施Filter。让你的适配器实现Filterable,即一个名为getFilter()的方法,它返回你的过滤器的一个实例。过滤器本身实现了两个方法:performFiltering(CharSequence constraint)和publishResults(CharSequence约束,FilterResults结果)。

然后在你的onItemClick方法中调用     adapter.getFilter.filter(contraint) 其中约束是CharSequence,区分您的阵列级别。在performFilter方法中,您可以将新数组的值放入results.values,将新数组的长度放入results.count。

最后,对adapter.notifyDatasetChanged()的调用会进入你的publishResults方法。

答案 2 :(得分:0)

<{1}} ListItem ArrayList您需要将项目添加到用于显示ListView

的同一list.add(model(id, name));
 if(listView.getAdapter()==null){
      adapter=new Adapter(getActivity(),list);
      listView.setAdapter(horizontalListAdapter);
  }
  else{
       adapter.notifyDataSetChanged();

  }

然后

didSelectRowAtIndexPath