0

我正在尝试使用按钮单击在我的 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.. 则第一行的删除按钮被隐藏。但是,我想从列表视图中隐藏所有项目的删除按钮。

请帮我。提前致谢。

4

2 回答 2

2

您是否尝试过删除这两条线?

notifyDataSetChanged();
MyActivity.editButtonState =false;

我的意思是,如果您想隐藏所有按钮,请不要更改editButtonState那里的值,因为下次您的代码通过该方法时,该值将为 false,因此不会隐藏其他元素。

于 2013-07-30T09:01:52.867 回答
0

更新:

正如您所说,我误解了循环的必要性,或者实际上不需要。我现在看到 getView 是针对单个项目的。

您可能还想移动此代码:

MyActivity.editButtonState =假;

到您按下以显示/隐藏的按钮下方的代码块。目前,它将在第一行隐藏后执行,因此意味着

if(MyActivity.editButtonState)

不会被多次调用。把它放在最后的显示/隐藏按钮下。

于 2013-07-30T08:58:10.387 回答