Android 滚动时列表视图自定义问题

Android 滚动时列表视图自定义问题,android,Android,我有下面覆盖getView的代码,我想要的是第一行总是显示一些自定义视图,第一行下面的项单元格将显示常规单元格。我的代码工作正常,没有任何错误,但当我滚动第一个单元格得到重复后,继续使用滚动颠倒,请参考下面的代码,如果有人能回答这一问题,这将是很大的帮助。谢谢 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holde

我有下面覆盖getView的代码,我想要的是第一行总是显示一些自定义视图,第一行下面的项单元格将显示常规单元格。我的代码工作正常,没有任何错误,但当我滚动第一个单元格得到重复后,继续使用滚动颠倒,请参考下面的代码,如果有人能回答这一问题,这将是很大的帮助。谢谢

 @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            int type = getItemViewType(position);
            holder = new ViewHolder();
            System.out.println("getView " + position + " " + convertView + " type = " + type);
            if  (convertView == null && position !=0) {
                System.out.println("inside if " + position);

                //holder = new ViewHolder();
                switch (type) {
                    case TYPE_ITEM:
                        convertView = mInflater.inflate(R.layout.item1, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.text);
                        holder.textView.setText(mData.get(position));

                        break;
                    case TYPE_SEPARATOR:
                        convertView = mInflater.inflate(R.layout.item2, null);
                        holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                        holder.textView.setText(mData.get(position));
                        break;
                }
                convertView.setTag(holder);
            }else if(position == 0){

                System.out.println("inside else if " + position);
                convertView = mInflater.inflate(R.layout.header, null);
                holder.textView = (TextView)convertView.findViewById(R.id.text);


            }else {
                System.out.println("inside else " + position);

                holder = (ViewHolder)convertView.getTag();
                try{
                holder.textView.setText(mData.get(position));
                }catch(Exception ex){
                    System.out.println("caught exception is "+ ex.getMessage());
                }
            }

            return convertView;
        }

您可能必须覆盖
getItemViewType
方法,并为每个类型返回不同的int(从0开始!)。因此,该方法也应该被覆盖

但是,为什么不简单地在
列表视图中使用a呢?

可以参考