MainActivityには、 GridView を使用して画像をグリッドにレイアウトするlistImagesFragmentという Fragment があります。その Fragment 内に ItemClickListerner があるため、画像の 1 つがクリックされると、別のアクティビティが開始され、その画像が表示されます。
私がやりたいのは、画像がクリックされたときに、クリックされた画像の別のバージョンを開くことです。議論のために、GridView が目のない顔を示しているとしましょう。そのうちの 1 つを押すと、目があるバージョンが表示されます。
これを行うために計画した方法は、グリッドビューに表示されている画像のリソース名を何らかの方法で取得し、それを文字列と連結することでした。この新しい名前を、他の画像をロードする単一の画像アクティビティ (guesser.java) に渡します。
例えば。GridView 画像リソースは ic_noface1 と呼ばれ、他の画像のリソースは ic_noface1_withface となります。
押した画像のリソース名を取得するにはどうすればよいですか? 私の現在のコードは以下の通りです:
MainActivity.java listImagesFragement 抽出
public class listImagesFragment extends Fragment {
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.gridview,container,false);
GridView gridView = (GridView) view.findViewById(R.id.gridview);
gridView.setAdapter(new RestaurantImageAdapter(view.getContext()));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent i = new Intent(getActivity(), Guesser.class );
i.putExtra("id", position);
startActivity(i);
}
});
return view;
}
}
Guesser.java
public class Guesser extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from singleitemview.xml
setContentView(R.layout.guesser);
// Get position from intent passed from MainActivity.java
Intent i = getIntent();
int position = i.getExtras().getInt("id");
// Open the Image adapter
RestaurantImageAdapter imageAdapter = new RestaurantImageAdapter(this);
// Locate the ImageView in single_item_view.xml
ImageView imageView = (ImageView) findViewById(R.id.imageView);
// Get image and position from ImageAdapter.java and set into ImageView
imageView.setImageResource(imageAdapter.mThumbIds[position]);
}
}
RestaurantImageAdapter.java グリッドビューを生成します
public class RestaurantImageAdapter extends BaseAdapter {
private Context mContext;
public RestaurantImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// 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);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
public Integer[] mThumbIds = {
R.drawable.r_tgi_blank, R.drawable.r_krispykreme_blank,
R.drawable.r_greggs_blank, R.drawable.r_nandos_blank,
R.drawable.r_dennys_blank, R.drawable.r_ihop_blank,
R.drawable.r_fb_blank, R.drawable.r_wagamama_blank,
R.drawable.r_subway_blank, R.drawable.r_bk_blank,
R.drawable.r_zizzi_blank, R.drawable.r_taco_blank,
R.drawable.r_starbucks_blank, R.drawable.r_bennigans_blank,
R.drawable.r_applebees_blank
};
}