0

我是 Android 编程新手。我正在创建一个非常简单的应用程序,其中有超过 5 张静态图片(存储在可绘制文件夹中)。现在,我创建了一个在 gridView 中显示所有图片的活动。假设,如果我单击第二个位置的图像,它将打开一个新活动,以全尺寸(使用 ImageView)模式显示该特定图像以及下一个下一个/上一个按钮以在图像上导航(用户不必只能从第一个图像,他/她可以从 gridView 中选择任何图像,然后导航将从该点本身开始)。我的问题是,我不想硬编码开关盒的数量等于图像数量来浏览按钮。有没有其他方法来实现所需的场景?或者我可以用来实现相同功能的任何其他 Android 功能?

提前致谢!!!

我也在添加我的代码(第一个活动):

公共类 GridViewActivity 扩展 Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_grid_view);
    GridView gridview = (GridView) findViewById(R.id.gridView);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

            //Create an Intent
            Intent intent = new Intent(getApplicationContext(), FullImageActivity.class);
            intent.putExtra("image", position);
            startActivity(intent);
        }
    });
}

}

Second Activity: public class FullImageActivity extends Activity implements OnClickListener {

Button button; int drawable; ImageView display; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_full_image); Intent intent = getIntent(); display = (ImageView) findViewById(R.id.fullImageView); ImageView imageView = null; String idName = "ivImage"; int id; for (int i = 1; i <= 2; i++) { id = getResources().getIdentifier(idName + i, "id", getPackageName()); imageView = (ImageView) findViewById(id); imageView.setTag((Integer) i); imageView.setOnClickListener(this); if (i == 1) { // make sure that your "drawable" has a value different than 0! // otherwise a click on setWall button might result into a crash drawable = id; } } int pos = intent.getExtras().getInt("image"); ImageAdapter imageAdapter = new ImageAdapter(this); imageView.setImageResource(imageAdapter.mThumbIds[pos]); Log.i("pos", "" + pos); // System.out.println("pos: " + pos); button = (Button) findViewById(R.id.btnNextScreen); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InputStream inputStream = getResources().openRawResource( drawable); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); try { getApplicationContext().setWallpaper(bitmap); } catch (IOException e) { // use Log.e() with all 3 params instead of // e.printStackTrace(); Log.e("MyTag", "couldn't set wallpaper", e); } } }); } @Override public void onClick(View v) { // just to make sure that the clicked view is a ImageView if (v instanceof ImageView) { ImageView imageView = (ImageView) v; int place = (Integer) imageView.getTag(); int drawableId = getResources().getIdentifier("image" + place, "drawable", getPackageName()); display.setImageResource(drawableId); drawable = drawableId; } }

}

我已经添加了@WarrenFaith 建议我的代码。添加建议的代码后,它在“imageView.setTag((Integer) i);”上给我一个错误。请告诉我哪里出错了。

4

1 回答 1

0

我刚刚回答了一个问题,目标是动态获取硬编码的东西。这不完全是您的应用程序类型,但我回答背后的基本思想应该为您提供正确的方向。

于 2012-09-11T22:26:59.990 回答