Android: 如何格式化 getIntent().getIntExtra

Android: How to format getIntent().getIntExtra

我正在尝试在另一个 class 中检索图像资源文件,意图 putExtra 已放置在 MainActivity 中,但我不确定如何在另一个 class 中检索它?我试过 getIntent().getIntExtra("category", search_name);但我只是得到错误。这个想法是用户点击食谱类别的照片,然后在另一个 class 我可以将该资源图像文件与类别名称匹配并检索相应的食谱。

此外,此 gridview 会降低应用程序的速度,我将如何在异步中包装和调用它?

MainActivity

GridView gv = findViewById(R.id.gridview);
        gv.setAdapter(new SetImageAdapter(this));
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {

                Intent intent = new Intent(MainActivity.this, Category.class);
                intent.putExtra("Category", SetImageAdapter.categories[position]); // put image data in Intent
                startActivity(intent); // start Intent

            }
        });

GridView 适配器

package com.stu54259.plan2cook;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class SetImageAdapter extends BaseAdapter {
    public static Integer[] categories = {
            R.drawable.african, R.drawable.american,
            R.drawable.asian, R.drawable.comfort,
            R.drawable.desserts, R.drawable.greek,
            R.drawable.italian, R.drawable.vegetarian,
            R.drawable.mexican,

    };
    private Context Cont;
    public SetImageAdapter(Context c) {
        Cont = c;
    }
    public int getCount() {
        return categories.length;
    }
    public Object getItem(int position) {
        return null;
    }
    public long getItemId(int position) {
        return 0;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imgview = new ImageView(Cont);
        imgview.setLayoutParams(new GridView.LayoutParams(370, 250));
        imgview.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imgview.setPadding(10,10,10, 10);
        imgview.setImageResource(categories[position]);
        return imgview;

    }

}

在您的 MainActivity 中:

GridView gv = findViewById(R.id.gridview);
        gv.setAdapter(new SetImageAdapter(this));
        gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {

                Intent intent = new Intent(MainActivity.this, Category.class);
                intent.putExtra("CategoryPosition", position); // put image data in Intent
                startActivity(intent); // start Intent

            }
        });

在您的类别中 activity:

int position = getIntent().getIntExtra("CategoryPosition",0);
int selectedDrawable = SetImageAdapter.categories[position];
//Get name of the selected drawable : 
String search_name =  getResources().getResourceEntryName(selectedDrawable);

您的 GridView 性能缓慢的可能原因是 drawable 资源大小,请确保使用的所有图像具有较小的分辨率和较小的尺寸。