0

次のコードを使用してカスタムを作成していますlistview。画像を動的に表示する必要があるため、すべての画像がLinearlayoutでこれに追加されます。問題は、これらの動的画像が複数回追加されることです。以下は私ののコードですgetView()

    LinearLayout fbpiclayout = null;

        if (convertView == null)
            vi = inflater.inflate(R.layout.popular_event_list, null);

         fbpiclayout = (LinearLayout) vi
                .findViewById(R.id.fbpic_layout);

        ArrayList<String> list=  mDbManager
                .getAllValuesComingSoonFriendList(facebookEventList
                        .get(position).getEventId());


        int height = 0;


        for(int i=0;i<list.size();i++)
        {
            if(i<3)
            {
                String friendPics = "http://graph.facebook.com/"
                        + list.get(i)
                        + "/picture?type=large";

                Log.d("Friends","list no "+i+" "+mDbManager
                        .getFacebookFriendName(list.get(i)));

                ImageView fbFriendimage = new ImageView(getActivity());
                LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
                vp.setMargins(3, 0, 3, 3);
                fbFriendimage.setLayoutParams(vp);
                fbFriendimage.setAdjustViewBounds(true);
                fbFriendimage.getLayoutParams().height = height;

                fbFriendimage.getLayoutParams().width = width_iv;
                fbFriendimage.setScaleType(ImageView.ScaleType.CENTER_CROP);
            //  image.setImageBitmap(bm);
                imageLoader.DisplayImage(friendPics, fbFriendimage);
                fbpiclayout.addView(fbFriendimage, vp);     

            }
        }

その問題について私に提案してください。前もって感謝します。

4

2 に答える 2

0

次のコードを試してください。

LinearLayout fbpiclayout = null;

        if (convertView == null)
            vi = inflater.inflate(R.layout.popular_event_list, null);

         fbpiclayout = (LinearLayout) vi
                .findViewById(R.id.fbpic_layout);

          //if the convertView was not null it would have the child view you added the 
          //  last time liner layout was used. So remove the added child view.  
          fbpiclayout.removeAllViews();

        ArrayList<String> list=  mDbManager
                .getAllValuesComingSoonFriendList(facebookEventList
                        .get(position).getEventId());


        int height = 0;


        for(int i=0;i<list.size();i++)
        {
            if(i<3)
            {
                String friendPics = "http://graph.facebook.com/"
                        + list.get(i)
                        + "/picture?type=large";

                Log.d("Friends","list no "+i+" "+mDbManager
                        .getFacebookFriendName(list.get(i)));

                ImageView fbFriendimage = new ImageView(getActivity());
                LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
                vp.setMargins(3, 0, 3, 3);
                fbFriendimage.setLayoutParams(vp);
                fbFriendimage.setAdjustViewBounds(true);
                fbFriendimage.getLayoutParams().height = height;

                fbFriendimage.getLayoutParams().width = width_iv;
                fbFriendimage.setScaleType(ImageView.ScaleType.CENTER_CROP);
            //  image.setImageBitmap(bm);
                imageLoader.DisplayImage(friendPics, fbFriendimage);
                fbpiclayout.addView(fbFriendimage, vp);     

            }
        }

編集1:パフォーマンスを向上させるためにスマートイメージビューhttp://loopj.com/android-smart-image-view/を使用してみてください...。

于 2012-10-30T09:27:23.847 に答える
0

そのループを使用しないでください。そのリストのサイズをgetCount()に入れます。正しく動作します

于 2012-10-30T09:29:18.297 に答える