В настоящее время у меня есть рабочий вид сетки, отображающий несколько миниатюр. В настоящее время при выборе изображения оно сохраняет большее разрешение изображения в качестве обоев.
То, что я хочу сделать, это открыть новое намерение, а затем отобразить изображение в полном разрешении на основе нажатой позиции GridView. Я не уверен, как узнать, какая позиция была нажата из нового действия / намерения.
Вот что я имею в своей основной деятельности
public class test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(getApplicationContext()));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(test.this, "" + position + "" + id, Toast.LENGTH_SHORT).show();
//Make a Bitmap from the Resource
ImageAdapter i = (ImageAdapter)parent.getAdapter();
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),(int)i.getItemId(position));
//Get the WallpaperManager
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
//Set the clicked bitmap
myWallpaperManager.setBitmap(mBitmap);
Toast.makeText(test.this, "Wallpaper set", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(test.this, "Error setting wallpaper", Toast.LENGTH_SHORT).show();
}
}
});
}
}
ImageAdapter
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return mFullSizeIds[position];
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.sample_1, R.drawable.sample_2,
R.drawable.sample_3, R.drawable.sample_4,
R.drawable.sample_5, R.drawable.sample_6,
R.drawable.sample_7
};
private Integer[] mFullSizeIds = {
R.drawable.wallpaper1,
R.drawable.wallpaper2,
R.drawable.wallpaper3,
R.drawable.wallpaper4,
R.drawable.wallpaper5,
R.drawable.wallpaper6,
R.drawable.wallpaper7
};
}
И пустой шаблон FullView
public class FullView extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fullview);
ImageView imageview;
imageview.setImageResource(mFullSizeIds[**]) <--- How to set ** to what GridView position was selected?
}
}
Я пока ничего не написал в действии FullView из-за того, что не знал, как передать позицию, которая была нажата из GridView в этом новом упражнении.
(я не написал код намерения в своей основной деятельности, чтобы вы могли видеть, как он работает в настоящее время)
Как передать позицию сетки, которая была выбрана в новое действие?