2015-04-17 161 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(); 

应该这样做。