[英]How to open a listview in another activity when a child item in an expandable listview is clicked
[英]Couldn't start/open an activity when expandable listview item/child clicked and how to implement Toast here
我在一個片段中創建了可擴展列表視圖,並且效果很好。 但是,我想在單擊可展開的listview子項時啟動活動。 我已經找了好幾個小時試圖找到解決方案,但是找不到。 有人請提供此問題的代碼。
import android.R.color;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.TextView;
import android.widget.Toast;
// This is a listfragment class
public class Categories extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.categories, null);
ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1);
elv.setAdapter(new SavedTabsListAdapter());
return v;
}
public class SavedTabsListAdapter extends BaseExpandableListAdapter {
private String[] groups = { "Men", "Women"};
private String[][] children = {
{ "Men's accessories", "Men's trousers"},
{ "Dresses", "Women's trousers"}
};
@Override
public int getGroupCount() {
return groups.length;
}
@Override
public int getChildrenCount(int i) {
return children[i].length;
}
@Override
public Object getGroup(int i) {
return groups[i];
}
@Override
public Object getChild(int i, int i1) {
return children[i][i1];
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
TextView textView = new TextView(CategoriesFragment.this.getActivity());
textView.setText(getGroup(i).toString());
return textView;
}
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
TextView textView = new TextView(CategoriesFragment.this.getActivity());
textView.setText(getChild(i, i1).toString());
return textView;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}
}
Intent k;
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
switch(childPosition){
case 0:
k = new Intent(getActivity().getApplicationContext(), Baby.class);
break;
case 1:
k = new Intent(getActivity().getApplicationContext(), Baby1.class);
break;
}
startActivity(k);
return true;
}
}
當您單擊什么子元素childposition
你在得到OnChildClick
功能?
以及在何處設置ChildClickListener
? 如果尚未設置,則在此代碼之后ExpandableListView elv = (ExpandableListView) v.findViewById(R.id.expandableListView1);
寫這一行elv.setOnChildClickListener("your_listener");
同樣,為了獲得最佳實踐,您可以通過以下方式編寫上面的偵聽器和OnChildClick函數:
首先刪除您的OnChildClick和OnChildClickListener(如果有的話),然后將代碼放在上述elv.setOnChildClickListener("your_listener");
這條路-
elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
switch(childPosition){
case 0:
k = new Intent(getActivity().getApplicationContext(), Baby.class);
break;
case 1:
k = new Intent(getActivity().getApplicationContext(), Baby1.class);
break;
}
startActivity(k);
return true;
}
});
讓我們知道您是否仍然遇到任何問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.