我正在尝试使用单击按钮在ListView的每一行中显示和隐藏删除按钮。
为此,我尝试使用以下代码:
SavedHomeBaseAdapter extends BaseAdapter {
private LayoutInflater mInflater;
Context cntx;
public SavedHomeBaseAdapter(Context context) {
mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return m_savedHomesList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressWarnings("deprecation")
@Override
public View getView( final int position, View convertView,final ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.nearbyhomestext, null);
holder = new ViewHolder();
holder.sqrt = (TextView) convertView.findViewById(R.id.text_squareft);
holder.fromPrice = (TextView) convertView.findViewById(R.id.text_from_price);
holder.deleteButton = (Button) convertView.findViewById(R.id.delete_btn);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
}
if(MyActivity.editButtonState)
{
holder.deleteButton.setVisibility(View.INVISIBLE);
notifyDataSetChanged();
MyActivity.editButtonState =false;
}
return convertView;
}
}
这里,如果editButtonState为true ..则第一行的删除按钮被隐藏。但是,我想隐藏列表视图中所有项目的删除按钮。
请帮帮我。提前谢谢。
答案 0 :(得分:2)
你试过删除这两行吗?
notifyDataSetChanged();
MyActivity.editButtonState =false;
我的意思是,如果你想隐藏所有按钮,不要在那里更改editButtonState
值,因为下次代码通过方法时,值将为false,因此其他元素不会被隐藏。< / p>
答案 1 :(得分:0)
更新:
我误解了需要一个循环,或者,实际上并不需要如你所说的那样。我现在看到getView是针对单个项目的。
您可能还想移动此代码:
MyActivity.editButtonState = false;
到您按下以显示/隐藏的按钮下方的代码块。目前,它将在第一行被隐藏后执行,因此意味着
if(MyActivity.editButtonState)
不会被多次调用。将它放在显示/隐藏按钮下,最后。