将图像从gridview设置为另一个活动

时间:2014-11-26 09:21:49

标签: android textview

我正在创建一个用于查看和共享图像的应用程序但是,我不知道如何将所选图像从gridview设置为具有imageview的SingleActivity。 请帮我。 任何帮助将不胜感激。

我的完整代码如下。

MainActivity.java

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    gridView = (GridView) findViewById(R.id.gridView);
    customGridAdapter = new GridViewAdapter(this, R.layout.row_grid, getData());
    gridView.setAdapter(customGridAdapter);

    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Intent i = 
                      new Intent(getApplicationContext(), SingleViewActivity.class);
                      // Pass image index
                      i.putExtra("id", position);
                      startActivity(i);
        }

    });

}

private ArrayList<ImageItem> getData() {
    final ArrayList<ImageItem> imageItems = new ArrayList<ImageItem>();
    // retrieve String drawable array
    TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
    for (int i = 0; i < imgs.length(); i++) {
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
                imgs.getResourceId(i, -1));
        imageItems.add(new ImageItem(bitmap, "Image#" + i));
    }

    return imageItems;

}

GridViewAdapter.java

    public GridViewAdapter(Context context, int layoutResourceId,
        ArrayList<ImageItem> data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ViewHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ViewHolder();
        holder.imageTitle = (TextView) row.findViewById(R.id.text);
        holder.image = (ImageView) row.findViewById(R.id.image);
        row.setTag(holder);
    } else {
        holder = (ViewHolder) row.getTag();
    }

    ImageItem item = data.get(position);
    holder.imageTitle.setText(item.getTitle());
    holder.image.setImageBitmap(item.getImage());
    return row;
}

static class ViewHolder {
    TextView imageTitle;
    ImageView image;
}

SingleViewActivity.java

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.single_view);

    Intent i = getIntent();

    // Selected image id
    int position = i.getExtras().getInt("id");
    ImageViewPic = (ImageView)findViewById(R.id.SingleView);
    }

Arrays.xml

<?xml version="1.0" encoding="utf-8"?>

<string-array name="image_ids">
    <item>@drawable/image_1</item>
    <item>@drawable/image_2</item>
    <item>@drawable/image_3</item>
    <item>@drawable/image_4</item>
    <item>@drawable/image_5</item>
    <item>@drawable/image_6</item>
    <item>@drawable/image_7</item>
    <item>@drawable/image_8</item>
    <item>@drawable/image_9</item>
    <item>@drawable/image_1</item>
    <item>@drawable/image_2</item>
    <item>@drawable/image_3</item>
    <item>@drawable/image_4</item>
    <item>@drawable/image_5</item>
    <item>@drawable/image_6</item>
    <item>@drawable/image_7</item>
    <item>@drawable/image_8</item>
    <item>@drawable/image_9</item>
</string-array>

row_grid.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:padding="5dp" 
android:clickable="false"
android:background="@drawable/grid_color_selector"
android:focusable="true">

<ImageView
    android:id="@+id/image"
    android:layout_width="100dp"
    android:layout_height="100dp" >
</ImageView>

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:textSize="12sp" >
</TextView>

1 个答案:

答案 0 :(得分:1)

Intent i = getIntent(); 
int position = i.getExtras().getInt("id");
ImageViewPic = (ImageView)findViewById(R.id.SingleView);
getData().get(position);
ImageItem item = getData().get(position); 
ImageViewPic .setImageBitmap(item.getImage());

 private ArrayList<ImageItem> getData() {
final ArrayList<ImageItem> imageItems = new ArrayList<ImageItem>();
// retrieve String drawable array
TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
for (int i = 0; i < imgs.length(); i++) {
    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
            imgs.getResourceId(i, -1));
    imageItems.add(new ImageItem(bitmap, "Image#" + i));
}

return imageItems;

 }