0

我有一個異步調用在自定義列表視圖adaper從getView()發生,如下(最後行):如何限制getView中特定項目的某些代碼的執行?

public View getView(final int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    holder=new Holder(); 
    View rowView; 
    rowView = inflater.inflate(R.layout.list_posts_item, null); 

    holder.tvTitle=(TextView) rowView.findViewById(R.id.tvTitleNamePost); 
    holder.ivPrimaryImage=(ImageView) rowView.findViewById(R.id.ivPrimaryImage); 
    holder.ivPrimaryImage.setId(position); 
    holder.ivPrimaryImage.setTag(listOfPosts.get(position).getPostId()); 
    holder.tvLocality=(TextView) rowView.findViewById(R.id.tvLocalityPosts); 
    holder.tvDateCreated=(TextView) rowView.findViewById(R.id.tvDateCreated); 


    holder.tvTitle.setText(listOfPosts.get(position).getTitle()); 
    holder.ivPrimaryImage.setImageBitmap(listOfPosts.get(position).getImage()); 

    holder.tvLocality.setText(listOfPosts.get(position).getLocality()); 
    holder.tvDateCreated.setText(listOfPosts.get(position).getCreatedDate()); 
    postId = listOfPosts.get(position).getPostId(); 
    Image image = new Image(); 
    image.setImg(holder.ivPrimaryImage); 
    if(!"N".equalsIgnoreCase(listOfPosts.get(position).getHasImage())) 
     new GetPrimaryImages().execute(image); 
    return rowView; 
} 

的問題是,異步調用是發生在每次得到執行getView。只有當考慮的項目是imageView時,我們才能限制通話嗎?

+0

你的意思是當你「按」一個ImageView? –

+0

@MicheleLacorte號 由於我的適配器有6行,我希望以下內容只能執行6次。 new GetPrimaryImages()。execute(image); 但它正在執行6 *一行中的小部件數量。 我想限制這一點。 – pagalpanda

+0

iteration on listOfPosts.size();並設置計數器有靜態,我知道這不是最好的方法,但它應該工作 –

回答

0

您不應該真的從getView()中調用異步,因爲儘量保持它儘可能輕,並且儘量通過正確使用視圖和回收視圖儘可能少地調用它。我不是100%你完成剩下的代碼的方式,所以這裏是一個很好的run through of all the details.在網上有很多其他深入的解釋,將通過你需要了解的關於getView()性能的所有東西。

0

這helpled:

android:layout_height="wrap_content" 

在我的ListView定義。將其更改爲fill_parent/match_parent將避免它。

相關問題