2017-05-06 8 views
0

そして、私がexpadablelistadapterをクリックするたびに、 は別のacitvityに行きます。クリックしたものはどのように判断するのですか?私はアンドロイドですべて新しいです、誰かが彼と私を助けることを願っています。私はsearchviewの検索結果にonclickメソッドを設定しようとしています

これは私の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(); 
} 

}

これは私のonclickの機能があることを仮定している私のコードの一部ですが、私はに追加すると意図する場所へのコードです他の活動はどのように達成できますか?

@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; 
} 

答えて

0

あなたのクラスで、この2つのリスナー

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

を? –

+0

お待ちください私の回答を更新します –

+0

ありがとうございます。 –

1

オーバーライドこの機能を追加:あなたはコードの行が何をするかを説明する気だろう

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

私の質問を編集しました。もう一度見てください。 Ty。 –

+0

答えを少しお教えください。 –

関連する問題