BaseAdapter不会使用setVisibility(View.GONE)隐藏布局

时间:2010-07-29 09:46:42

标签: java android

我有点问题。我有课

private static class EfficientAdapter extends BaseAdapter {
        private LayoutInflater mInflater;

        public EfficientAdapter(Context context) {

            mInflater = LayoutInflater.from(context);
        }

        // return size of elements
        public int getCount() {
            return BridgeJSON.listFromJSON.getItem().size();

        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                position_move = 0;

                convertView = mInflater.inflate(R.layout.row, null);

                holder = new ViewHolder();

                holder.txt_description = (TextView) convertView
                        .findViewById(R.id.description_event);

                ......

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


            if (listFromJSON.getItem().get(position).isViewed() == false) {


                convertView.setBackgroundColor(Color.RED);

                this.notifyDataSetChanged();




            } else {

                // get text for description
                String txt_for_description = listFromJSON.getItem().get(
                        position - position_move).getDescr();

                ..........
            }

            return convertView;
        }

        static class ViewHolder {
            TextView txt_description;
            TextView txt_time;
            TextView txt_title;
            TextView txt_place;
        }
    }

当我这样做时,方法convertView.setBackgroundColor(Color.RED)工作得很好,我需要什么 图像在那里: dl.dropbox.com/u/866867/stack/device2.png

但是当我想删除该项目时,我无法做到。我添加了convertView.setVisibility(View.GONE);,但是除了隐藏它之外还有空项目。我读到参数View.INVISIBLE不会隐藏布局,但View.GONE会有,但在我的代码中,却没有((

那个形象: http://dl.dropbox.com/u/866867/stack/device.png

1 个答案:

答案 0 :(得分:0)

使用适配器时,如果要删除项目,通常使用mAdapter.remove(theObjectToRemove);
然后,您更新ListView:
mListView.notifyDataSetChanged();
但是,在您的情况下,您有一个没有此方法的BaseAdapter。那么你可以在你的数据集中使用ArrayAdapter而不是BaseAdapter吗?

或者您必须在删除要从阵列中删除的内容后重新创建baseAdapter。