java - 向图像添加 Intent 以链接到另一个页面

标签 java android android-intent android-imageview

我需要有关我的购物应用程序 Collection 夹页面的帮助。它是一个 GridView 布局,其中保存了用于说明目的的图像。我要求这些图像能够指向每个不同的产品页面,而不是全部指向同一页面。以下是我的示例的一些代码 fragment 。

Collection 夹.java:

public class Favourites extends Activity implements OnClickListener {

ImageView btnAllShops, btnFavourites, btnUploads, btnSettings, btnBuys;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favourites);

    GridView gvFavourites = (GridView) findViewById(R.id.gvFavourites);
    gvFavourites.setAdapter(new ImageAdapter(this));

    gvFavourites.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(Favourites.this, "" + position, Toast.LENGTH_SHORT).show();
            switch (position) {
            case 0:
            // start one activity
            break;
            case 1:
            // start another activity
            break;
            // etc.

        }
        }});
}

private void findViewById() {
    btnAllShops = (ImageView) findViewById(R.id.btnAllShops);
    btnFavourites = (ImageView) findViewById(R.id.btnFavourites);
    btnUploads = (ImageView) findViewById(R.id.btnUploads);
    btnSettings = (ImageView) findViewById(R.id.btnSettings);
    btnBuys = (ImageView) findViewById(R.id.btnBuys);

    btnAllShops.setOnClickListener(this);
    btnFavourites.setOnClickListener(this);
    btnUploads.setOnClickListener(this);
    btnSettings.setOnClickListener(this);
    btnBuys.setOnClickListener(this);

}

@Override
public void onClick(View arg0) {
    switch (arg0.getId()) {
    case R.id.btnAllShops:
        Intent iA = new Intent(getApplicationContext(), AllShops.class);
        startActivity(iA);
        break;

    case R.id.btnFavourites:
        Intent iF = new Intent(getApplicationContext(), Favourites.class);
        startActivity(iF);

        break;

    case R.id.btnUploads:
        Intent iU = new Intent(getApplicationContext(), Uploads.class);
        startActivity(iU);

        break;

    case R.id.btnSettings:
        Intent iS = new Intent(getApplicationContext(),
                SettingsActivity.class);
        startActivity(iS);

        break;

    case R.id.btnBuys:
        Intent iBuy = new Intent(getApplicationContext(), Buys.class);
        startActivity(iBuy);

        break;
    }
}

}

ImageAdapter.java:

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 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);
        imageView.setLayoutParams(new GridView.LayoutParams(266, 266));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(10, 10, 10, 10);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}
// references to our images
private Integer[] mThumbIds = {
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, 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,
        R.drawable.sample_0, 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
};

}

最佳答案

您需要在 imageAdapter 的 getView 方法中添加一个 onClickListener。例如。

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(266, 266));
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setPadding(10, 10, 10, 10);
} else {
    imageView = (ImageView) convertView;
}

imageView.setImageResource(mThumbIds[position]);
//add your listener here.
imageView.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        switch (position) {
            //put whatever your different positions are
            case 0:
                startActivity(whatever activity name);
                break;
            case 1:
                startActivity(next activity name);
                break;
            //etc...
        startActivity("whatever you need to start");
    }
}

return imageView;

}

关于java - 向图像添加 Intent 以链接到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537736/

相关文章:

java - @Transactional 不打开另一个事务

android - NestedScrollView 中的项目在滚动到顶部或底部后需要单击两次

android - PendingIntent 未启动应用程序

java - 应用程序不幸停止了 Intent 数据解析

android - 不会触发后续的 onBind() 调用

java - Java比较和交换语义和性能

Java:替换字符串中缺少的 Unicode 符号?

android - 如何为 Android 和 iOS 使用相同的 Cucumber 步骤定义

java - 使用docker和java spring时keycloak认证问题

Android:在状态栏通知上添加按钮