2013-04-26 2 views
0

간단한 목록보기를 스크롤하려하지만 불행히도 스크롤이 원활하지 않습니다.가속 목록보기 스크롤

나는 문제가 무엇인지 알 수 없습니다. 난 아무것도 안할거야.

public class ArticleRowAdapter extends BaseAdapter { 
     private static final int TYPE_MAINARTICLE = 0; 
     private static final int TYPE_ARTICLE = 1; 
     private static final int TYPE_MAX_COUNT = TYPE_ARTICLE + 1; 

     private Context context;   
     private ArrayList<ArticleRow> mData = new ArrayList<ArticleRow>(); 
     private LayoutInflater mInflater; 

     public ArticleRowAdapter(Context context,ArrayList<ArticleRow> data) {   
      this.context = context; 
      this.mData = data; 
      mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     static class ArticleRowHolder 
     { 
      TextView tvTitle; 
      ImageView ivImage; 
      TextView tvSubTitle; 
     } 

     public void addItem(final ArticleRow item) { 
      mData.add(item); 
      notifyDataSetChanged(); 
     } 

     @Override 
     public int getItemViewType(int position) { 
      return position == 0 ? TYPE_MAINARTICLE : TYPE_ARTICLE; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return TYPE_MAX_COUNT; 
     } 

     @Override 
     public int getCount() { 
      return mData.size(); 
     } 

     @Override 
     public ArticleRow getItem(int position) { 
      return mData.get(position); 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ArticleRowHolder holder = null; 
      int type = getItemViewType(position); 

      if(convertView == null) 
      { 
       holder = new ArticleRowHolder(); 
       switch(type) 
       { 
       case TYPE_MAINARTICLE: 
        convertView = mInflater.inflate(R.layout.mainarticle,parent, false);     
        break; 
       case TYPE_ARTICLE: 
        convertView = mInflater.inflate(R.layout.article,parent , false);     
        break;    
       } 

       holder.tvTitle = (TextView)convertView.findViewById(R.id.articleTitle); 
       holder.ivImage = (ImageView)convertView.findViewById(R.id.articleImage);    
       holder.tvSubTitle = (TextView)convertView.findViewById(R.id.articleSubTitle);   
       convertView.setTag(holder); 
      } 
      else 
      { 
       holder = (ArticleRowHolder)convertView.getTag(); 
      } 

      ArticleRow articleRow = mData.get(position); 
      holder.tvTitle.setText((CharSequence)articleRow.title); 
      holder.tvSubTitle.setText(Html.fromHtml(articleRow.subTitle));  

      if(articleRow.imageURL == null) 
       holder.ivImage.setImageDrawable(this.context.getResources().getDrawable(R.drawable.dunk)); 
      else 
      { 
holder.ivImage.setImageDrawable(this.context.getResources().getDrawable(R.drawable.dunk)); 
      } 

      return convertView; 
    } 
+0

http://stackoverflow.com/questions/16032164/about-viewholder-pattern-implementation-optimisation-in-listview maybe useful – Stan

답변

0

나는 시차의 이유는 imageViews, 그게 전부가 확실히 있다고 말할 수있다 :

holder.ivImage = (ImageView)convertView.findViewById(R.id.articleImage); 

시도는 이미지 imageViews을 작성하고 :)을 어떻게 볼을하지. 또한 Google의 BitmapFun 및 LazyList를 확인하십시오. 목록/그리드보기의 이미지에 관한 정보입니다.