2011-08-09 40 views
0

我有下面的代码覆盖了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; 
     } 
+0

可以参考http://stackoverflow.com/questions/6982989/android-listview-scrollig-too-slow/6983209#6983209 – Shash316

回答

1

你可能有覆盖getItemViewType方法和返回不同的int对于每种类型(从0开始!)。相应地,getViewTypeCount方法也应该被覆盖。

但是,您为什么不简单地为您的ListView使用header view