滚动时列出视图自定义问题

时间:2011-08-09 11:32:15

标签: android

我有以下代码覆盖了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;
        }

1 个答案:

答案 0 :(得分:1)

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

但为什么不简单地使用header view作为ListView