【问题标题】:onClick Childlist on ExpandableList Android在 ExpandableList Android 上的 onClick Childlist
【发布时间】:2014-03-31 03:58:20
【问题描述】:

我正在使用expandableList,每个孩子都有自己的edittext来输入一个数字......当孩子被按下时,edittext会显示出来。如果不是,则edittext保持不可见..问题是当我按下子“A”时,其他一些子(例如子“L”和“Z”)也显示edittext...这是我在main中的代码活动:

  protected void onCreate(Bundle konsumsi) {
        super.onCreate(konsumsi);
        setContentView(R.layout.konsumsi_user);
        exKonsumsi = (ExpandableListView) findViewById(R.id.EVkonsumsi_user);
        exKonsumsi.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
        prepareListDataKonsumsi();
        exKonsumsiAdapter = new com.ta.helper.ExpandableListAdapterKonsumsi(
                this, listDataHeaderKonsumsiUser, listDataChildKonsumsiUser);
        exKonsumsi.setAdapter(exKonsumsiAdapter);
        kolomTakaran = (TextView) findViewById(R.id.takaran);
        takaran = ExpandableListAdapterKonsumsi.takaran;
        kolomTakaran.setText("" + takaran);
        exKonsumsi.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {
                EditText kolomEditTakaran = (EditText) v
                        .findViewById(R.id.kolomTakaran);
                CheckedTextView listChild = (CheckedTextView) v
                        .findViewById(R.id.lblListItemKonsumsi);
    /*          for (int i = 0; i < listDataHeaderKonsumsiUser.size(); i++) {
                    if (listDataHeaderKonsumsiUser.get(groupPosition) == listDataHeaderKonsumsiUser
                            .get(i)) {
                        int a = listDataChildKonsumsiUser.get(
                                listDataHeaderKonsumsiUser.get(i)).size();
                        for (int j = 0; j < a; j++) {
                            if (listChild.getText().toString() == listDataChildKonsumsiUser
                                    .get(listDataHeaderKonsumsiUser.get(i))
                                    .get(j)) {
                                kolomEditTakaran.setVisibility(v.VISIBLE);
                            }else{
                                kolomEditTakaran.setVisibility(v.INVISIBLE);
                            }
                        }
                    }
                }*/

                return true;
            }
        });
    }

    private void prepareListDataKonsumsi() {
        listDataHeaderKonsumsiUser = new ArrayList<String>();
        listDataChildKonsumsiUser = new HashMap<String, List<String>>();
        Collections.addAll(listDataHeaderKonsumsiUser, getResources()
                .getStringArray(R.array.header_konsumsi_user));
        List<String> daftarMakananTersimpan = new ArrayList<String>();
        List<String> daftarMakanan = new ArrayList<String>();
        Collections.addAll(
                daftarMakanan,
                getResources().getStringArray(
                        R.array.child_konsumsi_user_daftar_makanan));
        Collections.addAll(
                daftarMakananTersimpan,
                getResources().getStringArray(
                        R.array.child_konsumsi_user_daftar_makanan_tersimpan));
        listDataChildKonsumsiUser.put(listDataHeaderKonsumsiUser.get(0),
                daftarMakananTersimpan);
        listDataChildKonsumsiUser.put(listDataHeaderKonsumsiUser.get(1),
                daftarMakanan);
    }
}

我删除了我的可扩展适配器,因为我不再使用它了...我做了一个简单的研究,当我单击时举杯庆祝孩子和组的位置...你知道吗...孩子和组的位置随机变化每次我向上或向下滚动 希望有人帮助:) 非常感谢..

【问题讨论】:

  • 与最近的其他帖子非常相似,问题可能出在您的第二个代码块周围的上下文中。每行都有一个获取 OnClickListener 的视图,您有什么计划确保每行的 OnClickListener 有办法找出点击了哪一行?一种常见的模式是在每一行中的某些内容上设置标签(),并让 OnClickListener 调用 v.getTag() 并使用结果来确定支持数据的哪个数据项对应于被选中的单元格。
  • 'listChild' 是你的可扩展列表视图??
  • 你为什么不使用'setOnChildClickListener'..??
  • ASP... setOnChildClickListener 用于主要活动并使用 main.xml ...我要更改的是 childlistitem.xml 中的 EditText ...
  • @RobP 我已经尝试过你的建议......但它没有工作......

标签: android onclick expandablelistview


【解决方案1】:

对不起,如果我的回答很愚蠢:快速查看您的程序表明您使用 ==!= 作为 Java 字符串。据我所知,这不应该适用于 Java 6。 Java 7 ?

考虑改用string1.equals(string2),这可能会有所帮助。

【讨论】:

  • 它并没有真正解决我的问题..但感谢您有时间提供帮助:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多