2014-11-26 5 views
2

Я создаю приложение для просмотра и совместного использования изображений, но я не знаю Как установить выбранное изображение из gridview в SingleActivity, у которого есть изображение. Пожалуйста, помогите мне. любая помощь будет оценена.Установить изображение из gridview в другую активность

Полный код приведен ниже.

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> 

+0

В чем проблема? –

+0

Проверьте это [ссылка] (http://stackoverflow.com/questions/17878907/get-imageviews-image-and-send-it-to-an-activity-with-intent) – krishnan

+0

как я могу установить образ в изображение? singleviewActivity? –

ответ

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; 

} 
+0

может сказать, что это данные в этом коде –

+0

в данных, которые мы ссылаемся на nullpinnterexpection –

+0

проверить мой обновленный ответ – deepak825

Смежные вопросы