Android 单击按钮将列表项中按钮的可见性从不可见更改为可见

Android 单击按钮将列表项中按钮的可见性从不可见更改为可见,android,android-listview,Android,Android Listview,在列表项中,有一个按钮“删除”和文本视图。。单击列表项中的“删除”按钮,我将删除该特定列表项。。但我的问题是:删除按钮在开始时是不可见的,当用户单击屏幕顶部下面显示的“编辑”按钮时,我想使所有按钮从不可见变为可见。。但我不知道如何实现这一点 ListViewAdapater.java: public class ListViewAdapter extends BaseAdapter { public ArrayList<String> list; Context c

在列表项中,有一个按钮“删除”和文本视图。。单击列表项中的“删除”按钮,我将删除该特定列表项。。但我的问题是:删除按钮在开始时是不可见的,当用户单击屏幕顶部下面显示的“编辑”按钮时,我想使所有按钮从不可见变为可见。。但我不知道如何实现这一点

ListViewAdapater.java:

public class ListViewAdapter extends BaseAdapter {

    public ArrayList<String> list;
    Context context;
    private LayoutInflater mInflater;

    int count = 0;
    static int list_size;

    public ListViewAdapter(Context context, ArrayList<String> list) {
        super();
        this.context = context;
        this.list = list;
        mInflater = LayoutInflater.from(context);
        list_size = list.size();
    }

    public int getCount() {
        if (list == null) {
            return 0;
        } else {
            return list_size;
        }
    }

    @Override
    public Object getItem(int position) {
        Log.i("Calling getItem()", "getItem()");
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        Log.i("Calling getItemId()", "getItemId()");
        return position;
    }

    static class ViewHolder {
        TextView notes_text;

        static Button delete;
    }

    //  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.i("ListViewAdapter is calling...", "calling...");
        ViewHolder holder;
        Log.i("View to be converted", "" + convertView);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.simplerow, null);
            Log.i("View to be converted", "" + convertView);
            holder = new ViewHolder();
            holder.notes_text = (TextView) convertView.findViewById(R.id.rowTextView);

            holder.delete = (Button) convertView.findViewById(R.id.btn_minus);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.notes_text.setText((String) list.get(position));

        holder.delete.setTag((Integer) position);

        holder.delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                Integer myIntegerObject = new Integer((Integer) view.getTag());
                Log.i("Integer postioton", "" + myIntegerObject.intValue());

                list.remove(list.indexOf(list.get(myIntegerObject.intValue())));

                list_size = list.size();

                notifyDataSetChanged();
            }
        });

        return convertView;
    }
}
公共类ListViewAdapter扩展了BaseAdapter{
公共阵列列表;
语境;
私人停车场;
整数计数=0;
静态整数列表大小;
公共ListViewAdapter(上下文、ArrayList列表){
超级();
this.context=上下文;
this.list=列表;
mInflater=LayoutInflater.from(上下文);
list_size=list.size();
}
public int getCount(){
if(list==null){
返回0;
}否则{
返回列表的大小;
}
}
@凌驾
公共对象getItem(int位置){
Log.i(“调用getItem(),“getItem()”);
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
Log.i(“调用getItemId(),“getItemId()”);
返回位置;
}
静态类视窗夹{
文本视图注释\文本;
静态按钮删除;
}
//@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
Log.i(“ListViewAdapter正在调用…”,“调用…”);
视窗座;
Log.i(“要转换的视图”,“转换视图”);
if(convertView==null){
convertView=mInflater.inflate(R.layout.simplerow,null);
Log.i(“要转换的视图”,“转换视图”);
holder=新的ViewHolder();
holder.notes_text=(TextView)convertView.findViewById(R.id.rowTextView);
holder.delete=(按钮)convertView.findViewById(R.id.btn_减号);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.notes_text.setText((字符串)list.get(位置));
holder.delete.setTag((整数)位置);
holder.delete.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图){
Integer myIntegerObject=newinteger((Integer)view.getTag());
Log.i(“整数positon”,“myIntegerObject.intValue());
list.remove(list.indexOf(list.get(myIntegerObject.intValue()));
list_size=list.size();
notifyDataSetChanged();
}
});
返回视图;
}
}

保留一个布尔标志以指示编辑模式。在
ListAdapter
getView()
中,根据您的布尔标志,将
按钮设置为
可见
消失

现在,要切换所有按钮的可见性,请更改布尔标志,并在适配器上调用
notifyDataSetChanged()
。这将重新绘制所有可见的列表项

在适配器类中添加变量:

boolean editmode = false;
public void setEditMode(boolean value){
  editmode = value;
  this.notifyDataSetChanged();
}
getView()
中:

最后,向适配器类添加一个方法:

boolean editmode = false;
public void setEditMode(boolean value){
  editmode = value;
  this.notifyDataSetChanged();
}

保留一个布尔标志以指示编辑模式。在
ListAdapter
getView()
中,根据您的布尔标志,将
按钮设置为
可见
消失

现在,要切换所有按钮的可见性,请更改布尔标志,并在适配器上调用
notifyDataSetChanged()
。这将重新绘制所有可见的列表项

在适配器类中添加变量:

boolean editmode = false;
public void setEditMode(boolean value){
  editmode = value;
  this.notifyDataSetChanged();
}
getView()
中:

最后,向适配器类添加一个方法:

boolean editmode = false;
public void setEditMode(boolean value){
  editmode = value;
  this.notifyDataSetChanged();
}

你能进一步探究答案吗。我遇到了这个问题,我在顶部有一个列表和一个编辑按钮,但当我将“删除”按钮的可见性更改为“列表项中的可见”时,列表仅在最后一行显示“删除”按钮。请进一步探索答案。我遇到了这个问题,我在顶部有一个列表和一个编辑按钮,但当我将“删除”按钮的可见性更改为“列表项中的可见”时,列表仅在最后一行显示“删除”按钮。