2017-02-20 3 views
0

У меня есть сетка с изображениями и на изображении нажмите конкретное изображение, которое должно быть передано следующему действию. Теперь, если работа с одним изображаемым рисунком, эта процедура проста но как получить результаты при работе с изображениями в виде сетки. Изображения хранятся на стороне клиента. Вот мой код activity1 с видом сеткикак передать изображение из вида сетки в другую активность в android

public class GridActivity extends AppCompatActivity { 

GridView androidGridView; 

Integer[] imageIDs = { 
     R.drawable.alien, R.drawable.capt_spaulding, R.drawable.captain, 
     R.drawable.stark, R.drawable.casper, R.drawable.captainamerica, 
     R.drawable.spidey, R.drawable.abra, R.drawable.bulbasaur 
}; 


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

    androidGridView = (GridView) findViewById(R.id.avatar_grid); 
    androidGridView.setAdapter(new ImageAdapterGridView(this)); 

    androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.captain); 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      byte[] byteArray = stream.toByteArray(); 

      Toast.makeText(getBaseContext(), "Grid Item " + 
        (position + 1) + " Selected", Toast.LENGTH_LONG).show(); 

      Intent intent = new Intent(GridActivity.this,FinalActivity.class); 
      gosudo.putExtra("picture", byteArray); 
      startActivity(intent); 
     } 
    }); 

} 

public class ImageAdapterGridView extends BaseAdapter { 
    private Context mContext; 

    public ImageAdapterGridView(Context c) { 
     mContext = c; 
    } 

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

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

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView mImageView; 

     if (convertView == null) { 
      mImageView = new ImageView(mContext); 
      mImageView.setLayoutParams(new GridView.LayoutParams(130, 130)); 
      mImageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      mImageView.setPadding(16, 16, 16, 16); 
     } else { 
      mImageView = (ImageView) convertView; 
     } 
     mImageView.setImageResource(imageIDs[position]); 
     return mImageView; 
} 
} 
} 

И это finalActivity где выбранное изображение показано

public class FinalActivity extends AppCompatActivity { 


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

    Bundle extras = getIntent().getExtras(); 
    byte[] byteArray = extras.getByteArray("picture"); 

    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
    //image view where the chosen image should set 
    ImageView image = (ImageView) findViewById(R.id.selectedimageview); 

    image.setImageBitmap(bmp); 

} 
} 

Я прошел через такие вопросы, как stackquestions, но не получил никакого успеха.

+0

вы можете отправлять URL-адреса изображений, отправляя Bitmap Object. –

+0

Вы получаете URL-адреса изображений из webService. Передайте этот imageUrl своей деятельности в Bundle. – nnn

ответ

0

Так вот решение, GridActivity

int imageRes = imageIDs[position]; 

      Intent intent = new Intent(GridActivity.this,FinalActivity.class); 
      intent.putExtra("IMAGE_RES", imageRes); 
      startActivity(intent); 

В FinalAct

ImageView image = (ImageView) findViewById(R.id.selectedimageview); 

    Bundle extras = getIntent().getExtras(); 
    int imageRes = extras.getInt("IMAGE_RES"); 

    image.setImageResource(imageRes); 
1

Поскольку вы используете ресурс, вы можете передать идентификатор.

Intent intent = new Intent(this, FinalActivity.class); 
intent.putExtra("imageId",imageId); 

И в заключительной деятельности:

int imageId = getIntent().getIntExtra("imageId"); 
image.setImageResource(imageId); 
+0

getIntExtra ("imageId") показывает ошибку, поскольку getIntExtra() требует (String, int). – Shubhendra

0
@Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      //get image resource based on adapter click position. 
      int imageRes = imageIDs[position]; 

      //then pass it with the intent. 
      Intent intent = new Intent(GridActivity.this,FinalActivity.class); 
      intent.putExtra("IMAGE_RES", imageRes); 
      startActivity(intent); 
     } 
    }); 

    //In FinalActivity.class 
    //retrieve the resource clicked and set to the imageView. 
    int imageRes = getIntent().getExtra("IMAGE_RES"); 
    image.setImageResource(imageRes); 
+0

int imageRes = getIntent(). GetExtra («IMAGE_RES») ;, здесь getExtra показывает ошибку «не может разрешить метод .getExtra (java.lang.String) – Shubhendra

+0

Попробуйте использовать« getIntExtra(); » – user1503703

+0

« getIntExtra(); » требует int not string. Любое другое рабочее решение? – Shubhendra

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