从适配器更改活动按钮状态

时间:2013-03-18 10:43:43

标签: listview button android-activity adapter

我的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不是行按钮,它来自主活动,包含整个列表视图。

感谢任何有价值的答案! :)

1 个答案:

答案 0 :(得分:0)

也许我错过了smth,但我设法这样做的唯一方法是制作DeleteButton变量 - public和static(在Activity中),并在onCheckedChange方法的Adapter中访问它。