2017-05-06 3 views
0

Et maintenant je veux juste à chaque fois que je clique sur l'expadablelistadapter ça va aller à un autre acitvity. Comment déterminer lequel est cliqué? Je suis tout nouveau à Android, j'espère que quelqu'un peut m'aider avec le sien.Je suis en train de mettre une méthode onclick sur le résultat de recherche de mon searchview

Voici le code à l'endroit où le code de mon listadapter

public class MyExpandableListAdapter extends BaseExpandableListAdapter { 

private Context context; 
private String container; 
private ArrayList<ParentRow> parentRowList; 
private ArrayList<ParentRow> originalList; 

    public MyExpandableListAdapter(Context context 
     , ArrayList<ParentRow> originalList) { 
    this.context = context; 
    this.parentRowList = new ArrayList<>(); 
    this.parentRowList.addAll(originalList); 
    this.originalList = new ArrayList<>(); 
    this.originalList.addAll(originalList); 
} 

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

@Override 
public int getChildrenCount(int groupPosition) { 
    return parentRowList.get(groupPosition).getChildList().size(); 
} 

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

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    return parentRowList.get(groupPosition).getChildList().get(childPosition); 
} 

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

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

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

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    ParentRow parentRow = (ParentRow) getGroup(groupPosition); 

    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) 
       context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.parent_row, null); 
    } 

    TextView heading = (TextView) convertView.findViewById(R.id.parent_text); 

    heading.setText(parentRow.getName().trim()); 
    return convertView; 
} 

@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    ChildRow childRow = (ChildRow) getChild(groupPosition, childPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) 
       context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.child_row, null); 
    } 

    ImageView childIcon = (ImageView) convertView.findViewById(R.id.child_icon); 
    childIcon.setImageResource(childRow.getIcon()); 

    final TextView childText = (TextView) convertView.findViewById(R.id.child_text); 
    childText.setText(childRow.getText().trim()); 

    final View finalConvertView = convertView; 
    childText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(finalConvertView.getContext() 
        , childText.getText() 
        , Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    return convertView; 
} 

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

public void filterData(String query) { 
    query = query.toLowerCase(); 
    parentRowList.clear(); 

    if (query.isEmpty()) { 
     parentRowList.addAll(originalList); 
    } 
    else { 
     for (ParentRow parentRow : originalList) { 
      ArrayList<ChildRow> childList = parentRow.getChildList(); 
      ArrayList<ChildRow> newList = new ArrayList<ChildRow>(); 

      for (ChildRow childRow: childList) { 
       if (childRow.getText().toLowerCase().contains(query)) { 
        newList.add(childRow); 
       } 
      } // end for (com.example.user.searchviewexpandablelistview.ChildRow childRow: childList) 
      if (newList.size() > 0) { 
       ParentRow nParentRow = new ParentRow(parentRow.getName(), newList); 
       parentRowList.add(nParentRow); 
      } 
     } // end or (com.example.user.searchviewexpandablelistview.ParentRow parentRow : originalList) 
    } // end else 

    notifyDataSetChanged(); 
} 

}

Ceci est la partie de mon code où ma fonctionnalité onclick est supposé être, je veux ajouter et à l'intention de autre activité comment puis-je l'atteindre?

@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    ChildRow childRow = (ChildRow) getChild(groupPosition, childPosition); 
    if (convertView == null) { 
     LayoutInflater layoutInflater = (LayoutInflater) 
       context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 
     convertView = layoutInflater.inflate(R.layout.child_row, null); 
    } 

    ImageView childIcon = (ImageView) convertView.findViewById(R.id.child_icon); 
    childIcon.setImageResource(childRow.getIcon()); 

    final TextView childText = (TextView) convertView.findViewById(R.id.child_text); 
    childText.setText(childRow.getText().trim()); 

    final View finalConvertView = convertView; 
    childText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(finalConvertView.getContext() 
        , childText.getText() 
        , Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    return convertView; 
} 

Répondre

0

ajouter ce deux auditeur

expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 
      @Override 
      public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
       //here get you selected groupPosition 
       Log.e("position",""+groupPosition); 
       ParentRow parentRow = parentRowList.get(groupPosition); 
       //if you want to send intent of any parent row click then put intent code here 
       startActivity(new Intent......); 
       return false; 
      } 
     }); 
     expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
      @Override 
      public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 
       //here get you selected groupPostion and childPosition 
       Log.e("position",""+groupPosition+":"+childPosition); 
       ChildRow childRow = parentRowList.get(groupPosition).getChildList().get(childPosition) 
       //if you want to send intent of any child row click then put intent code here 
       startActivity(new Intent......); 
       return false; 
      } 
     }); 
+0

Pourriez-vous expliquer ce que la ligne de code va faire? –

+0

ok wait je mettrai à jour ma réponse –

+0

Ok. Merci Monsieur. –

1

Override cette fonction dans votre classe:

@Override 
    public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {  
     //check childPosition and call appropriate activity  
     return true; 
} 
+0

J'ai éditer ma question s'il vous plaît jeter un oeil à nouveau. Ty. –

+0

Pourriez-vous s'il vous plaît spécifier un peu de votre réponse? –