2015-04-17 184 views
0

可擴展列表視圖是正確的,但在再次調用時不會刷新。舊項目再次出現在可擴展列表視圖中。這是我的適配器類。 我如何刷新展開列表中的項目?刷新可擴展列表視圖

MyAdapter.class

public class MyAdapter extends BaseExpandableListAdapter { 
private Context _context; 
    private static List<String> _listDataHeader; // header titles 
    // child data in format of header title, child title 
    private static HashMap<String, List<String>> _listDataChild; 

    public MyAdapter(Context context, List<String> listDataHeader,HashMap<String, List<String>> listChildData) { 
     this._context = context; 
     this._listDataHeader = listDataHeader; 
     this._listDataChild = listChildData; 
    } 
    @Override 
    public Object getChild(int groupPosition, int childPosititon) { 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)).get(childPosititon); 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     return childPosition; 
    } 

    @Override 
    public View getChildView(int groupPosition, final int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 

     final String childText = (String) getChild(groupPosition, childPosition); 

     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_item, null); 
     } 

     TextView txtListChild = (TextView) convertView 
       .findViewById(R.id.lblListItem); 

     txtListChild.setText(childText); 
     return convertView; 
    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .size(); 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 
     return this._listDataHeader.get(groupPosition); 
    } 

    @Override 
    public int getGroupCount() { 
     return this._listDataHeader.size(); 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 
     return groupPosition; 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 
     String headerTitle = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) this._context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.list_group, null); 
     } 

     TextView lblListHeader = (TextView) convertView.findViewById(R.id.lblListHeader); 
     lblListHeader.setTypeface(null, Typeface.BOLD); 
     lblListHeader.setText(headerTitle); 

     return convertView; 
    } 

    @Override 
    public boolean hasStableIds() { 
     return false; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 
     return true; 
    } 

} 
+0

.notifyDataSetChanged(); –

+0

我應該在哪裏調用這個方法? –

+0

那裏你設置新項目 –

回答

6

添加此方法MyAdapter並使用它:

public void setNewItems(List<String> listDataHeader,HashMap<String, List<String>> listChildData) { 
    this._listDataHeader = listDataHeader; 
    this._listDataChild = listChildData; 
    notifyDataSetChanged(); 
} 
+0

仍然可擴展列表視圖不刷新!我在MyAdapter –

+0

中添加了該方法,請大家幫忙! ! –

+0

告訴我你如何使用它(也許所有的類文件)? –

0

listView.invalidateViews()也可以幫助這裏

1

你應該調用這個函數適配器外滿足您的需求。 在主要課程中,您可以在onClickonExpand之後調用此課程。

adapter.notifyDataSetChanged(); 

應該這樣做。