我试图在搜索结果的搜索结果上设置onclick方法

时间:2017-05-06 09:33:21

标签: android searchview

现在我只想点击expadablelistadapter  它将进入另一个活动。如何确定点击了哪一个?我是android的新手,希望有人可以帮助我。

这是我的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;
}

2 个答案:

答案 0 :(得分:1)

在您的课程中覆盖此功能:

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

答案 1 :(得分:0)

添加这两个监听器

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