[英]Child click listener is not working in Expandable list view
我的活动中有可扩展列表视图,但问题是当我单击子元素时,它没有播下 toast 消息。下面是我的 MainActivity 类和适配器类:
主Activity.class
public class MainActivity extends AppCompatActivity {
ExpandableListView expand;
List<String> category = new ArrayList<>();
Map<String,List<String>> child = new HashMap<>();
MyExListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
expand = findViewById(R.id.expand);
List<String> mobiles = new ArrayList<>();
List<String> jewel = new ArrayList<>();
category.add("Mobile Covers");
category.add("T-Shirts");
category.add("Notebooks");
category.add("Jewellery");
category.add("Honey");
category.add("Corporate Gifts");
category.add("Packaging");
category.add("Deals");
mobiles.add("Apple");
mobiles.add("Samsung");
mobiles.add("OnePlus");
mobiles.add("Vivo");
mobiles.add("Oppo");
mobiles.add("Redmi");
jewel.add("Designer");
jewel.add("Classic");
child.put(category.get(0),mobiles);
child.put(category.get(1),jewel);
adapter = new MyExListAdapter(this,category,child);
expand.setAdapter(adapter);
expand.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(getApplicationContext(),"" +child.get(category.get(groupPosition)).get(childPosition),Toast.LENGTH_SHORT).show();
return false;
}
});
}
MyExListAdapter.java
package com.app.aamkuapp.Adapters;
public class MyExListAdapter extends BaseExpandableListAdapter {
Context context;
List<String> category;
Map<String ,List<String>> child;
public MyExListAdapter(Context context, List<String> category, Map<String, List<String>> child) {
this.context = context;
this.category = category;
this.child = child;
}
@Override
public int getGroupCount() {
return category.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return child.get(category.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return category.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return child.get(category.get(groupPosition)).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 false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String cat = (String) getGroup(groupPosition);
if(convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_parent,null);
}
TextView txt1 = convertView.findViewById(R.id.textParent);
txt1.setText(cat);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
String chi = (String) getChild(groupPosition,childPosition);
if(convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_child,null);
}
TextView txt2 = convertView.findViewById(R.id.textChild);
txt2.setText(chi);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
有人请让我知道为什么单击子元素时 Toast 没有显示。任何帮助将不胜感激。
谢谢
从此更改您的适配器代码..
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
到这个..
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.