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
资源大小,请确保使用的所有图像具有较小的分辨率和较小的尺寸。
我正在尝试在另一个 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
资源大小,请确保使用的所有图像具有较小的分辨率和较小的尺寸。