0

次のように、カスタム リストビュー アダプターで 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 が実行されるたびに Async 呼び出しが発生することです。対象のアイテムが imageView の場合のみ、呼び出しを制限できますか?

4

2 に答える 2

0

これは役に立ちました:

android:layout_height="wrap_content"

私のListView定義で。これを fill_parent/match_parent に変更すると回避できます。

于 2015-09-01T19:03:52.140 に答える
0

getView() から async を実際に呼び出すべきではありません。ビューホルダーとリサイクラー ビューを適切に使用して、これを可能な限り軽量に保ち、できるだけ呼び出しを少なくすることが最善です。コードの残りの部分をどのように実行したかは 100% わかりませんgetView() のパフォーマンスに関して理解する必要があるすべてのことを説明する詳細な説明がオンラインで他にも多数あります。

于 2015-09-01T17:14:04.483 に答える