2

Volley と ListView に問題があります。Volley がどのように機能するのか理解していないかもしれません...ここを見てください。これは私のアクティビティのコードです:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mRequestQueue = Volley.newRequestQueue(this);
    imageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache());

    items = createItemList();

    expListView = (ListView) findViewById(R.id.listView);
    ListAdapter listAdapter = new ListAdapter();
    expListView.setAdapter(listAdapter);
}

私は と をセットアップVolley.newRequestQueue(this)ImageLoaderましたBitmapLruCacheここでも同じです)。

ListAdapter でオーバーライドするときgetView()

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) 
            convertView = infalInflater.inflate(R.layout.menu_item, null);
        final ImageView ivCover = (ImageView) convertView.findViewById(R.id.icCoverThumb);
        imageLoader.get(items.get(position).url, ImageLoader.getImageListener(ivCover, R.drawable.ic_launcher, R.drawable.ic_launcher));
        return convertView;
    }

ここで使用しますimageLoader.get(items.get(position).url, ImageLoader.getImageListener(ivCover, R.drawable.ic_launcher, R.drawable.ic_launcher));(ここは柔らかい場所ですか?)。

Thumbs がロードされましたが、うまくいきませんでした: アプリを初めて起動すると、リスト ビューの最初の項目の ico が他の行のアイコンの 1 つと重複しています - http://prntscr.com/1wmrck

ありがとう!

4

1 に答える 1

2

詳細情報なしで再現するのは難しいですがNetworkImageView、ネットワークからサムネイルを読み込むために を使用することをお勧めします。ところで、「ViewHolder」を使用してパフォーマンスを向上させます。ListView

ArrayAdapterこれはListView にツイートを表示するサンプルです

...
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.tweet_list_item, null);
        holder = new ViewHolder();
        holder.imageView = (NetworkImageView) convertView.findViewById(R.id.twitterUserImage);
        //set more views (username, text, date ...)

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    //get the current element from the data array
    Tweet currentTweet = getItem(position);

    //set data into the views
    holder.imageView.setImageUrl(currentTweet.getUser().getProfileImageUrl(), VolleyManager.getImageLoader());
    //...


    return convertView;
}

private static class ViewHolder {
    private NetworkImageView imageView;
    //other views...
}
于 2013-10-11T15:32:42.030 に答える