2012-09-20 2 views
3

Я хотел бы, чтобы фильтровать данные в ExpandableListView в Android с помощью EditText, убедитесь, что adapter следует осуществлять Filtering, но не знает , как выполнить эту реализацию из-за отсутствие знаний о данных фильтров. Структура моего адаптера:ExpandableListView Android + фильтр EditText

public class ExpandableListAdapter extends 
     BaseExpandableListAdapter /*implements Filterable*/ { 

    private final Context myContext; 

    private String[] arrayTopics; 
    private String[][] arraySubTopics; 

    public PrimeirosSOSExpandableListAdapter(Context context) { 
     this.myContext = context; 
    } 

    public ExpandableListAdapter(Context context, 
      String[] arrayTopics, String[][] arraySubTopics) { 
     this.myContext = context; 
     this.arrayTopics = arrayTopics; 
     this.arraySubTopics = arraySubTopics; 

    } 

    public Object getChild(int groupPosition, int childPosition) { 
     return null; 
    } 

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

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

     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) myContext 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.child_layout, 
        null); 
     } 

     TextView tv = (TextView) convertView.findViewById(R.id.tvChild); 
     tv.setText(arraySubTopics[groupPosition][childPosition]); 

     return convertView; 
    } 

    public int getChildrenCount(int groupPosition) { 
     return arraySubTopics[groupPosition].length; 
    } 

    public Object getGroup(int groupPosition) { 
     return null; 
    } 

    public int getGroupCount() { 
     return arrayTopics.length; 
    } 

    public long getGroupId(int groupPosition) { 
     return 0; 
    } 

    public View getGroupView(int groupPosition, boolean isExpanded, 
      View convertView, ViewGroup parent) { 

     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) myContext 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.group_layout, 
        null); 
     } 

     TextView tv = (TextView) convertView.findViewById(R.id.tvGroup); 
     tv.setText(arrayTopics[groupPosition]); 

     return convertView; 
    } 

    public boolean hasStableIds() { 
     return false; 
    } 

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

ответ

1

Я не слишком много знаю об этой части Android себя я совершенно новом, но я видел в моих исследованиях по другой проблеме некоторых вещей о CursorTreeAdapter. У него есть некоторые методы, встроенные в него для работы с фильтрацией. Вот информация об Android API. CursorTreeAdapter можно использовать с ExpandableListView.

http://developer.android.com/reference/android/widget/CursorTreeAdapter.html

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