Android,设置列表项布局中的可见性
Android, set visibility within list item layout
我试图在单击编辑按钮时在我的列表视图中的每个列表项上显示一个删除按钮。我在应用程序的其他地方使用 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
}
}
}
);
首先,我会弄清楚为什么你的代码没有 work.You 膨胀 noteItemView
,但它没有绑定到屏幕上查看,那是你的 'noteitemview' 赢了'永远显示,因此您在该视图中的删除按钮将不可见。
然后我会展示我的解决方案。
正如你所说,每个列表项都有一个删除按钮,你应该做的是控制它们的可见性,所以首先确保在绑定到列表视图项的视图中有一个按钮作为列表视图项的子视图 view.In 你的 getView
of custom CursorAdapter
,添加逻辑来处理删除按钮的可见性,例如每个列表项数据都有一个名为isDeleteButtonShow的布尔变量,然后通过控制变量的值来控制删除按钮的可见性,一旦可见应该更改,更新数据绑定到列表视图并调用 adapter.notifyDataSetChanged
。希望可以帮助你。
我试图在单击编辑按钮时在我的列表视图中的每个列表项上显示一个删除按钮。我在应用程序的其他地方使用 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
}
}
}
);
首先,我会弄清楚为什么你的代码没有 work.You 膨胀 noteItemView
,但它没有绑定到屏幕上查看,那是你的 'noteitemview' 赢了'永远显示,因此您在该视图中的删除按钮将不可见。
然后我会展示我的解决方案。
正如你所说,每个列表项都有一个删除按钮,你应该做的是控制它们的可见性,所以首先确保在绑定到列表视图项的视图中有一个按钮作为列表视图项的子视图 view.In 你的 getView
of custom CursorAdapter
,添加逻辑来处理删除按钮的可见性,例如每个列表项数据都有一个名为isDeleteButtonShow的布尔变量,然后通过控制变量的值来控制删除按钮的可见性,一旦可见应该更改,更新数据绑定到列表视图并调用 adapter.notifyDataSetChanged
。希望可以帮助你。