Android,在列表项布局中设置可见性

时间:2015-10-01 02:46:08

标签: android view onclick set

单击编辑按钮时,我试图在列表视图中的每个列表项上显示删除按钮。我在应用程序的其他地方使用setVisibility,所以我尝试复制该代码,但问题在于列表项中的布局元素不是片段实现的布局xml文件的一部分,它们是由特殊的一个使用的我的CursorAdapter。我可以使用布局充气器找到所需的可隐藏元素,因此我不再获得nullPonterException,但是按钮点击时可见性不会发生变化。

//      Onclick method for Edit button
    final Button buttonE = (Button) rootView.findViewById(R.id.editNotesButton);
    buttonE.setTag(0);
    //cannot use rootView as that points to fragment_main
    final LayoutInflater factory = getLayoutInflater(savedInstanceState);
    final View noteItemView = factory.inflate(R.layout.note_list_view_item, null);

    final LinearLayout deleteButton = (LinearLayout) noteItemView.findViewById(R.id.delete_button_group);
    final LinearLayout circleButton = (LinearLayout) noteItemView.findViewById(R.id.circle_button_group);
    buttonE.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {

           final int status =(Integer) v.getTag();
           if(status == 1) {
               buttonE.setText("Edit");
               circleButton.setVisibility(View.VISIBLE);
               deleteButton.setVisibility(View.GONE);
               v.setTag(0); //pause
           } else {
               buttonE.setText("Done");
               circleButton.setVisibility(View.GONE);
               deleteButton.setVisibility(View.VISIBLE);
               v.setTag(1); //pause
           }
       }
       }

    );

1 个答案:

答案 0 :(得分:0)

首先,我会弄清楚为什么你的代码不起作用。你膨胀noteItemView,但它没有绑定到屏幕上的视图,那就是你的'noteitemview'不会永远显示,所以您在该视图中的删除按钮将无法查看。
然后我会展示我的解决方案。 正如您所说,每个列表项都有一个删除按钮,您应该做的是控制它们的可见性,因此首先要确保在View binded to listview项目中有一个按钮作为listview项目视图的childView。在{{1自定义getView,添加逻辑来处理删除按钮的可见性,例如,每个列表项数据都有一个名为isDeleteButtonShow的布尔变量,然后通过控制变量的值来控制删除按钮的可见性,一旦可见性发生变化,将数据绑定更新到listview并调用CursorAdapter。希望这可以帮到你。