0

私の質問は、AQuery を使用した画像の読み込みの遅延に関するものです

だから私のアプリはこれです:さまざまな情報と画像へのリンクを含むjsonを読み取ります(これはAsyncTaskのdoInBackgroundの手順で行われます)。また、この手順のリンクを読んだ後、写真も読みました (詳細については、以下のコードを参照してください)。

 class GetMessages extends AsyncTask<String, Void, String> {


    @Override
protected String doInBackground(String... params) {
    HttpClient httpClient = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(uri);

            // code that reads the json .......
    Bitmap picture = null;
    try {
      URL newurl = new URL(json.getString("pic_url"));
      picture = BitmapFactory.decodeStream(newurl.openConnection() .getInputStream());
    }catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

            // after this, i put all the read info, and the pics in a list of 
            // objects, that is then usen in the method onPostExecute to populate
            //  my custom adapter ...see code below 

static class ViewHolder {
ImageView picView;
 }

public class MyCustomBaseAdapter extends BaseAdapter  {

    private LayoutInflater mInflater;

    private ArrayList<Product> products;

    public ArrayList<Product> getProducts() {
        return products;
    }

    public void setProducts(ArrayList<Product> products) {
        this.products = products;
    }

    public MyCustomBaseAdapter(Context context, ArrayList<Product> products) {
         this.products = products;
         this.mInflater = LayoutInflater.from(context);
     }

     public int getCount() {
         return products.size();
     }

     public Object getItem(int position) {
         return products.get(position);
     }

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

     public View getView(int position, View convertView, ViewGroup parent) {

         ViewHolder holder;

         if (convertView == null) {
             convertView = mInflater.inflate(R.layout.product_item, null);
             holder = new ViewHolder();
             holder.picView = (ImageView) convertView.findViewById(R.id.pic_view);

             convertView.setTag(holder);

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


         holder.picView.setImageBitmap(products.get(position).getPicture());



         return convertView;
     }

すでにおわかりのように... 15 枚の写真があると... ユーザーはすべての情報が読み込まれる前に眠くなってしまいます...

  1. 私がやりたいのは、Delay Image Loading を使用することです...しかし、ピースをまとめることができないようです...アダプターをどのように変更すればよいですか?
  2. 基本的にあなたの wiki ページからコードを追加し、メソッド get view の代わりにそれを使用しますか? ...ヘルプまたはwikiにあるものよりも完全な例へのリンクは、私のような初心者に役立ちます:)
  3. このフレームワークは商用アプリでも使用できますか?

ありがとう :)

4

1 に答える 1

0

shouldDelay を使用するデモのソースは次のとおりです。

https://github.com/androidquery/androidquery/blob/master/demo/src/com/androidquery/test/image/ImageLoadingListActivity.java https://github.com/androidquery/androidquery/blob/master/demo/src /com/androidquery/test/image/ImageLoadingList4Activity.java

一度に1ステップ実行してみてください。

例のように getView メソッドの数行を置き換え、 aq.image を使用してイメージを URL でロードすることをお勧めします。

交換:

holder.picView.setImageBitmap(products.get(position).getPicture());

with:

AQuery aq = new AQuery(convertView);
aq.id(holder.picView).image(products.get(position).getPicture());

その後、より効率的にするために shouldDelay を追加します。

答えは、このフレームワークに関するグルの 1 人である Peter Liu に属します :)

于 2013-04-23T18:24:00.030 に答える