-2

私のアプリケーションでは、MySQL サーバー データベースからすべての画像と名前を Android 携帯電話に取得しています。エミュレータ画面がHVGAの場合、 5 つの画像と名前のみが表示されます。

LogCatでも、 5つの名前だけが出力されます。画面をスクロールすると、印刷されている名前だけが画面にいくつ表示されますか? その代わりに、スクロールする前にすべての名前を出力する必要があります。

これは私のコードです:

public class VegdishesListview extends BaseAdapter {
    String qrimage;
    Bitmap bmp, resizedbitmap;
    Bitmap[] bmps;
    Activity activity = null;
    private LayoutInflater inflater;

    private ImageView[] mImages;
    String[] itemimage;
    TextView[] tv;
    String itemname,price,desc;
    String[] itemnames;
    String[] prices;
    String[] descs;
    HashMap<String, String> map = new HashMap<String, String>();

    public VegdishesListview(Context context, JSONArray imageArrayJson) {
        //inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //  imageLoader=new ImageLoader(activity);
        inflater=LayoutInflater.from(context);
        this.mImages = new ImageView[imageArrayJson.length()];
        this.bmps = new Bitmap[imageArrayJson.length()];
        this.itemnames = new String[imageArrayJson.length()];
        this.prices=new String[imageArrayJson.length()];
        this.descs=new String[imageArrayJson.length()];
        try {
            for (int i = 0; i < imageArrayJson.length(); i++) {
                JSONObject image = imageArrayJson.getJSONObject(i);
                qrimage = image.getString("itemimage");
                itemname = image.getString("itemname");
                price=image.getString("price");
                desc=image.getString("itemdesc");

                itemnames[i] = itemname;
                prices[i]=price;
                descs[i]=desc;

                byte[] qrimageBytes = Base64.decode(qrimage.getBytes());

                bmp = BitmapFactory.decodeByteArray(qrimageBytes, 0,
                                                    qrimageBytes.length);
                int width = 100;
                int height = 100;
                resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height,
                                                          true);
                bmps[i] = bmp;

                mImages[i] = new ImageView(context);
                mImages[i].setImageBitmap(resizedbitmap);

                mImages[i].setScaleType(ImageView.ScaleType.FIT_START);

                // tv[i].setText(itemname);
            }
            System.out.println(map);
        } catch (Exception e) {
          // TODO: handle exception
        }
    }

    public int getCount() {
        return mImages.length;
    }

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(final int position, View convertView, ViewGroup parent) {
        View vi=convertView;

        vi = inflater.inflate(R.layout.vegdisheslistview, null);

        TextView text=(TextView)vi.findViewById(R.id.vegdishestext);
        ImageView image=(ImageView)vi.findViewById(R.id.vegdishesimage);
        TextView text1=(TextView)vi.findViewById(R.id.vegdishesprice);
        TextView text2=(TextView)vi.findViewById(R.id.vegdishesdesc);
        image.setImageBitmap(bmps[position]);
        text.setText(itemnames[position]);
        text1.setText(prices[position]);
        text2.setText(descs[position]);
        System.out.println(itemnames[position]);

        return vi;
    }
}

System.out.println(itemnames[position]); ここでは、スクロールする代わりに、すべての項目名を印刷したいと考えています。

4

1 に答える 1

0

メソッドgetViewは表示されているアイテムに対してのみ呼び出されるため、次のようにコードを配置する必要があります

for(String itemname: itemnames)
  System.out.println(itemname);

コンストラクターの最後 ( の後System.out.println(map);) から印刷する代わりにそれを行いますgetView

于 2012-04-21T10:57:57.770 に答える