Android 如何更改自定义listview项布局中按钮的可见性
我有自定义布局的listview,每个布局有一个TextView、一个Seekbar和一个按钮。我只想在单击“编辑”按钮时,自定义布局中的所有按钮都将可见。我使用notifyDataSetChanged在单击编辑按钮后,没有任何更改 这里是我的代码片段 在CustomAdapter中,我定义了一个方法,boolean标志和getView方法Android 如何更改自定义listview项布局中按钮的可见性,android,android-listview,Android,Android Listview,我有自定义布局的listview,每个布局有一个TextView、一个Seekbar和一个按钮。我只想在单击“编辑”按钮时,自定义布局中的所有按钮都将可见。我使用notifyDataSetChanged在单击编辑按钮后,没有任何更改 这里是我的代码片段 在CustomAdapter中,我定义了一个方法,boolean标志和getView方法 public class NavigationDrawerListViewAdapter extends BaseAdapter { boolean e
public class NavigationDrawerListViewAdapter extends BaseAdapter {
boolean editmode = false;
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder.mButton=(Button)convertView.findViewById(R.id.button2);
holder.mButton.setVisibility( (editmode ? View.VISIBLE : View.INVISIBLE ) );
}
}
}
public void setEditMode(boolean value){
editmode = value;
this.notifyDataSetChanged();
}
我的ListViewActivity类
editLayers = (Button) rootview.findViewById(R.id.editLayersButton);
editLayers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (editLayers.getText().equals("Düzenle")) {
myAdapter.setEditMode(true);
editLayers.setText("Tamam");
} else {
myAdapter.setEditMode(false);
editLayers.setText("Düzenle");
}
}
});
提前谢谢
更改此选项
if (convertView == null) {
holder.mButton=(Button)convertView.findViewById(R.id.button2);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
然后写。如果..请将以下代码移到<代码>之外。。否则…
holder.mButton.setVisibility( (editmode ? View.VISIBLE : View.INVISIBLE ) );
getView()
中有一个bug,需要为objectholder
创建一个实例
建议代码:
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
...
}
注意
holder=new
为了显示简短的代码片段,我没有粘贴“if”的else部分,我不明白?你是什么意思?你有没有移动这个支架.mButton.setVisibility((editmode?View.VISIBLE:View.INVISIBLE));在if.之外。。还有别的吗?我现在搬家了:)工作起来很有魅力^^^^因为我犯了错误。谢谢。永远欢迎。然后接受答案。需要“if(convertView==null)”的else代码。原因是convertView可能不是空的,因为它是可回收的。看起来您已经有了解决方案,但我注意到发布的代码中有一个bug。所以我发布了一个答案,希望它会有用,避免间歇性问题。