Android 如何更改自定义listview项布局中按钮的可见性

Android 如何更改自定义listview项布局中按钮的可见性,android,android-listview,Android,Android Listview,我有自定义布局的listview,每个布局有一个TextView、一个Seekbar和一个按钮。我只想在单击“编辑”按钮时,自定义布局中的所有按钮都将可见。我使用notifyDataSetChanged在单击编辑按钮后,没有任何更改 这里是我的代码片段 在CustomAdapter中,我定义了一个方法,boolean标志和getView方法 public class NavigationDrawerListViewAdapter extends BaseAdapter { boolean e

我有自定义布局的listview,每个布局有一个TextView、一个Seekbar和一个按钮。我只想在单击“编辑”按钮时,自定义布局中的所有按钮都将可见。我使用notifyDataSetChanged在单击编辑按钮后,没有任何更改

这里是我的代码片段

在CustomAdapter中,我定义了一个方法,boolean标志和getView方法

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,需要为object
holder
创建一个实例

建议代码:

@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。所以我发布了一个答案,希望它会有用,避免间歇性问题。