2012-09-20 4 views
3

Je voudrais filtrer les données dans un ExpandableListView dans Android en utilisant EditText, vérifiez que le adapter devrait mettre en œuvre Filtering mais ne savent pas comment accomplir cette mise en œuvre en raison du manque de connaissances sur les données du filtre. La structure de mon adaptateur est:ExpandableListView Android + filtre 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; 
    } 
} 

Répondre

1

Je ne sais pas trop sur cette partie de moi-même Android que je suis tout à fait nouveau, mais j'ai vu dans mes recherches pour un autre problème des choses au sujet de la CursorTreeAdapter. Il a quelques méthodes intégrées pour travailler avec le filtrage. Voici les informations de l'API Android à ce sujet. Le CursorTreeAdapter peut être utilisé avec un ExpandableListView.

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