0

が付属していますGridView。できるだけまっすぐBaseAdapterに保つように努め、パターンを使用しています。は縦モードで 1 列、横モードで 2 列あり、パフォーマンスに大きな違いがあります。1 列の場合、リストは非常にスムーズにスクロールしますが、2 列の場合は遅れて途切れます。getView()ViewHolderGridView

の追加のパフォーマンスに関するヒントはありGridViewますか?

getView メソッドに関しては、リスト項目にテキストを設定する以外は何もしないようにしましたが、画像を設定していなくても 2 列モードで途切れます。ちなみにNexus 10を使用しているため、ハードウェアが問題になることはありません。

編集:これは私のgetView方法です:

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

    ViewHolder holder;

    checkLoadMore(position);

    final Item item = combinedGsr.getItems().get(position);

    if (convertView == null) {
        convertView = myInflater.inflate(R.layout.item_result, null);

        holder = new ViewHolder();
        holder.Tv1 = (TextView) convertView.findViewById(R.id.textView1);
        holder.Tv2 = (TextView) convertView.findViewById(R.id.textView2);
        holder.Tv3 = (TextView) convertView.findViewById(R.id.textView3);
        holder.Tv4 = (TextView) convertView.findViewById(R.id.textView4);
        holder.Btn = (CheckableImageButton) convertView
                .findViewById(R.id.favbtn);
        holder.Iv = (ImageView) convertView.findViewById(R.id.imageView1);
        holder.Root = (RelativeLayout) convertView.findViewById(R.id.root);
        holder.ImageRoot = (RelativeLayout) convertView
                .findViewById(R.id.imageroot);

        convertView.setTag(holder);
    }

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

    holder.Tv1.setText(item.getTitle());

    String preis = item.getPrice();

    if (preis.contains("Kaufpreis") && preis.length() > 10) {

        String ps = preis.substring(10, preis.length());
        Log.d("LAY", "String " + ps);

        String ptext = "Kaufpreis: " + "<font color='#000000\'>" + ps
                + "</font>";

        holder.Tv2.setText(Html.fromHtml(ptext));

    }

    else {
        holder.Tv2.setText(preis);
    }

    String land = item.getCountry();

    if (land.length() > 15) {

        String es = land.substring(15, land.length());
        String ltext = "Land: " + "<font color='#000000\'>" + es        // tried not using it, makes no difference
                + "</font>";
        holder.Tv3.setText(Html.fromHtml(ltext));
    }

    else {
        holder.Tv3.setText("");
    }

    holder.Tv4.setText(item.getLocation());

    String nurl = Tools.convertImageUrl(item.getThumbnailUrl()); // this is just some regex, tried not using it, makes no difference

    displayImage(nurl, holder.Iv, holder.ImageRoot);        // This uses the UniversalImageLoader library to display an Image

    int pad = holder.Root.getPaddingBottom();

    if (GlobalApp.favItemsContain(item.getGuid())) {        // I had this in suspicion, tried not using it, makes no difference

        holder.Btn.setChecked(true);
        holder.Root.setBackgroundResource(R.drawable.listitem_bg_green);

    }

    else {

        holder.Btn.setChecked(false);
        holder.Root.setBackgroundResource(R.drawable.listitem_bg_gray);

    }

    holder.Root.setPadding(pad, pad, pad, pad);

    holder.Btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            String guid = item.getGuid();

            int[] location = new int[2];
            v.getLocationOnScreen(location);

            if (GlobalApp.favItems(guid)) {
                GlobalApp.removeFromFavItems(guid);

                if (toast != null) {
                    toast.cancel();
                }

                toast = Toast.makeText(
                        ctx,
                        ctx.getResources().getString(
                                R.string.item_entfernt),
                        Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.TOP | Gravity.LEFT, location[0],
                        location[1]);

                toast.show();
            }

            else {
                GlobalApp.addToFavItems(guid, item);

                if (toast != null) {
                    toast.cancel();
                }

                toast = Toast.makeText(
                        ctx,
                        ctx.getResources().getString(
                                R.string.item_gesetzt),
                        Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.TOP | Gravity.LEFT, location[0],
                        location[1]);

                toast.show();
            }

        }
    });



    return convertView;
}
4

0 に答える 0