欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 關(guān)于ExpandableListView刷新問題的解決方法

 更新時(shí)間:2016年12月17日 15:53:07   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇Android 關(guān)于ExpandableListView刷新問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

正文

首先是最基礎(chǔ)的

ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list);
EListAdapter adapter = new EListAdapter(getApplicationContext(), list); //list 是數(shù)據(jù)源
vList.setAdapter(adapter);

//適配器就不寫了, 都懂的
class EListAdapter extends BaseExpandableListAdapter {}

一般情況下, ListView是使用notifyDataSetChanged() 更新的

adapter.notifyDataSetChanged();

ExpandableListView 也是ListView, 估計(jì)這樣是可以的.
 
可惜現(xiàn)在用的不是ListView, 而是ExpandableListView! 所以報(bào)錯(cuò)了0. 0

Java.lang.ClassCastException: Android.widget.ExpandableListConnector

在Google 找了資料, 發(fā)現(xiàn)是很多都犯這個(gè)錯(cuò)誤. 解決方法也蠻簡(jiǎn)單的!

class EListAdapter extends BaseExpandableListAdapter {
  public EListAdapter(Context context, List<T> list) {
    this.list = list;
    this.context = context;
    handler = new Handler(){

      @Override
      public void handleMessage(Message msg) {
       notifyDataSetChanged();
       super.handleMessage(msg);
      }
    };
  }
  
  public void refresh() {
    handler.sendMessage(new Message());
  }
}

只要我們調(diào)用refresh() 方法就可以使用notifyDataSetChanged() 了.

可是!! 只有GroupView 更新!!

ChildView 沒有更新! 慘了....要更新的在ChildView!!

繼續(xù)靠Google 娘! 大家都提供很多方法, 有一個(gè)人說, 直接在list 添加item 再更新就可以了!

我試了一下,沒有任何效果.......

查了一查SDK 文檔, 發(fā)現(xiàn)Group 的伸縮會(huì)引起getChildView(int, int, boolean, View, ViewGroup)  的運(yùn)行!

所以刷新的ChildView 的方法很簡(jiǎn)單.

只有伸縮一次就可以了! 連Adapter 都不用重寫! 簡(jiǎn)單吧?

vList.collapseGroup(groupPosition);
vList.expandGroup(groupPosition);

以上就是小編為大家?guī)?lái)的Android 關(guān)于ExpandableListView刷新問題的解決方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評(píng)論