1

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
    };
}
4

0 に答える 0