2015-04-17 2 views
0

Расширяемое listview является правильным, но оно не обновляется при повторном вызове. Старые элементы снова отображаются в раскрывающемся списке. Это мой класс адаптера. Как обновить элементы в expab = ndable listview?Обновить Расширяемый список просмотров

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

Вы должны вызывать эту функцию вне адаптера удовлетворить ваши потребности. В главном классе вы можете это назвать после onClick, или onExpand.

adapter.notifyDataSetChanged(); 

Должен сделать это.

Смежные вопросы