android - 为什么我的 ExpandableListView 中的点击会被忽略?

标签 android expandablelistview

我有一个由 ExpandableListView 填充的 AlertDialog。该列表本身运行良好,但由于某种原因,点击被忽略了。显然我的点击处理程序从未被调用。

这是代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select something");
ExpandableListView myList = new ExpandableListView(this);
MyExpandableListAdapter myAdapter = new MyExpandableListAdapter();
myList.setAdapter(myAdapter);
myList.setOnItemClickListener(new ExpandableListView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> a, View v, int i, long l) {
        try {
            Toast.makeText(ExpandableList1.this, "You clicked me", Toast.LENGTH_LONG).show();
        }
        catch(Exception e) {
            System.out.println("something wrong here    ");
        }
    }
});
builder.setView(myList);
dialog = builder.create();
dialog.show();

如果我改为尝试使用普通 ListView 填充 AlertDialog,则可以毫无问题地生成点击事件:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select Color Mode");

ListView modeList = new ListView(this);
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" };
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray);
modeList.setAdapter(modeAdapter);
modeList.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();
        }
      });


builder.setView(modeList);
AlertDialog dialog1 = builder.create();
dialog1.show();

点击事件在我的 ExpandableListView 中失败但在普通 ListView 中失败的原因可能是什么?我可能遗漏了什么,但我不知道那可能是什么。

最佳答案

好的,解决方案非常简单。由于它是一个可扩展列表,因此列表本身会捕获项目点击以打开子元素。因此,永远不会调用事件处理程序。

相反,您必须实现 OnChildClickListener(),顾名思义,它会监听子点击!

关于android - 为什么我的 ExpandableListView 中的点击会被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6693710/

相关文章:

java - 将在线 XML 数据设置/传递到表格布局中的图像按钮的逻辑

android单选列表选择问题?

java - 如何为每个节点指定唯一的名称

android - 新的可扩展 ListView 高度可定制

android - 如何为自定义 ExpandableListView 调用 notifyDataSetChanged?

android - 如果子项在可扩展 ListView android中为空,如何单击组

java - 为什么自定义的ExpandableListView在android中不显示

java - java中遍历队列的方法

android - 尝试使用 google 的地理编码 api 获取位置信息时出现奇怪的字符

android - 如何查询到 Firestore 子文档