图像设置在android中的Gallery视图

时间:2012-03-05 12:43:27

标签: android galleryview

我们如何用一些信息切换图片?当我们切换图片时,信息也应该在android中的Gallery视图中切换。

  public class ImageAdapter extends BaseAdapter {
        String[] Merchantname=null,Cardname=null,Points=null,Expirydate=null,status=null;
        private Context ctx;
        int imageBackground;
        Bitmap[] image_data;

        public ImageAdapter(Context c, Bitmap []card_image,String [] Merchantname,String [] Cardname,String []points,String[] Expirydate, String []status) {
            ctx = c;
            image_data = card_image;
            TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
            imageBackground = ta.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 1);
            ta.recycle();
            this.Merchantname=Merchantname;
            this.Cardname=Cardname;
            this.Points=points;
            this.Expirydate=Expirydate;
            this.status=status;
        }

        public int getCount() {

            return image_data.length;
        }

        public Object getItem(int arg0) {

            return arg0;
        }

        public long getItemId(int arg0) {

            return arg0;
        }

        public View getView(int position, View arg1, ViewGroup arg2) {
            TextView tv1,tv2,tv3,tv4,tv5;
            ImageView i ;//= new ImageView(this.ctx);
            if (arg1 == null) { 
                i = new ImageView(this.ctx); 
            } else { 
                i = (ImageView) arg1; 
            } 

            tv1=(TextView)findViewById(R.id.Merchantname);
            tv2=(TextView)findViewById(R.id.Cardname);
            tv3=(TextView)findViewById(R.id.Expirydate);
            tv4=(TextView)findViewById(R.id.status);

            tv1.setText(Merchantname[position]);
            tv2.setText(Cardname[position]);
            tv3.setText(Expirydate[position]);
            tv4.setText(status[position]);

//          ImageView iv = new ImageView(ctx);
//          Drawable drawable = new BitmapDrawable(getResources(), image_data[position]);
            i.setImageBitmap(image_data[position]);
            i.setImageDrawable(new BitmapDrawable(getResources(), image_data[position]));
            i.setScaleType(ImageView.ScaleType.FIT_XY);
            i.setLayoutParams(new Gallery.LayoutParams(300,200));
            i.setBackgroundResource(imageBackground);
            return i;
        }

    }

3 个答案:

答案 0 :(得分:0)

您只需使用ArrayList,其索引将与Gallery views个别视图相关联,而ArrayList的长度将与setOnItemClickListener上的图库视图长度相匹配使用位置变量来更改匹配相同索引的数组列表中的内容

   // Reference the Gallery view
    Gallery g = (Gallery) findViewById(R.id.gallery);
    // Set the adapter to our custom adapter (below)
    g.setAdapter(new ImageAdapter(this));

    // Set a item click listener, and just Toast the clicked position
    g.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id) {
            Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
        }
    });

答案 1 :(得分:0)

使用ImageViewTextView创建布局。然后为Gallery编写自定义适配器,并在getView方法中添加ImageViewTextView您的值。他们将此适配器设置为Gallery

答案 2 :(得分:0)

问题在于此处,

    tv1=(TextView)findViewById(R.id.Merchantname);
    tv2=(TextView)findViewById(R.id.Cardname);
    tv3=(TextView)findViewById(R.id.Expirydate);
    tv4=(TextView)findViewById(R.id.status);

在请求LayoutFile之前忘了提到父视图,为所有TextView添加(TextView)arg1.findViewById()并告诉我们。 希望它有所帮助