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