【问题标题】:Change Activity Button State from Adapter从适配器更改活动按钮状态
【发布时间】:2023-04-08 04:56:01
【问题描述】:

我的 Activity 中有一个 ListView,当用户选中/取消选中任何 ListView 项目上的复选框时,我必须更改我的 DeleteButton 状态 (VISIBLE - GONE)。

我试着做这样的事情:

holder.cb_row_adminNotesCheck
                .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
                        int getPosition = (Integer) buttonView.getTag();
                        mNotesList.get(getPosition).setSelected(isChecked);
                        if (isChecked) {
                            map.put(getPosition, true);
                        } else {
                            map.remove(getPosition);
                        }
                        setDeleteButtonVisibility();

                    }
                });
..
private void setDeleteButtonVisibility() {
    LayoutInflater inflater = (LayoutInflater) activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Button deleteButton = (Button) inflater.inflate(R.layout.adminnotes,
            null).findViewById(R.id.ib_adminnotesDeleteMore);

    deleteButton.setVisibility(statesMap.size() > 0 ? View.VISIBLE : View.GONE);
}

但我的 DeleteButton 没有任何反应。我调试了应用程序,一切似乎都很好,但是 DeleteButton 的“识别”是:

activity.getLayoutInflater().inflate(R.layout.adminnotes,
            null).findViewById(R.id.ib_adminnotesDeleteMore);

并将其设置为 VISIBLE / GONE。

PS。请注意,deleteButton 不是一个行按钮,它来自整个列表视图的主活动。

任何有价值的答案将不胜感激! :)

【问题讨论】:

    标签: listview button android-activity adapter


    【解决方案1】:

    也许我错过了一些东西,但我设法做到这一点的唯一方法是使 DeleteButton 变量 - 公共和静态(在 Activity 内部),并在 onCheckedChange 方法中的 Adapter 中访问它。

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      相关资源
      最近更新 更多