繁体   English   中英

子单击侦听器在可扩展列表视图中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM