Java 图像的Gridview查看每个图像打开不同的活动
我正在尝试实现一个Gridview,它显示来自drawables的预定义ImagesView数组,我希望在单击打开活动时显示每个ImageView,下面您可以看到我的代码 ImageAdapter.javaJava 图像的Gridview查看每个图像打开不同的活动,java,android,gridview,imageview,Java,Android,Gridview,Imageview,我正在尝试实现一个Gridview,它显示来自drawables的预定义ImagesView数组,我希望在单击打开活动时显示每个ImageView,下面您可以看到我的代码 ImageAdapter.java import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
//CLASS TO FILL THE GRID VIEW AS ADAPTER AT activity_main.xml WITH IMAGES OF OUR CATEGORIES
public class ImageAdapter extends BaseAdapter {
private Context mContext;
// Keep all Images in array
public Integer[] mThumbIds = {
R.drawable.test_icon_1, R.drawable.test_icon_2,
R.drawable.test_icon_3, R.drawable.test_icon_4,
};
// Constructor
public ImageAdapter(Context c){
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
return mThumbIds[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(mThumbIds[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return imageView;
}
}
activity_main.xml
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="2"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
我找不到一种方法来实现这一点,并让它理解要打开哪个活动,因为稍后我想通过显示从SQLite数据库请求的ImageView来实现这一点,并在单击时打开特定的活动
我想通过传递一个整数来实现这一点,例如1,2,3,4。。。将其作为父类别id的SQL参数并动态显示子类别id有一个非常简单的解决方案。与其将Gridview的基础值集设置为整数数组,不如定义一个自定义类,该类还指定要打开的活动。例如:
class MyGridviewClass{
public MyGridviewClass(Class<? extends Activity> mActivityToOpen, Integer mGridviewImageLoc) {
this.mActivityToOpen = mActivityToOpen;
this.mGridviewImageLoc = mGridviewImageLoc;
}
public Class<? extends Activity> getmActivityToOpen() {
return mActivityToOpen;
}
public void setmActivityToOpen(Class<? extends Activity> mActivityToOpen) {
this.mActivityToOpen = mActivityToOpen;
}
public Integer getmGridviewImageLoc() {
return mGridviewImageLoc;
}
public void setmGridviewImageLoc(Integer mGridviewImageLoc) {
this.mGridviewImageLoc = mGridviewImageLoc;
}
private Class<? extends Activity> mActivityToOpen;
private Integer mGridviewImageLoc;
}
class MyGridviewClass{
public MyGridviewClass(类感谢您的回复。我理解您的代码,但我无法指定静态打开哪个活动。因为我将从SQLite db检索一个类别。如果类别为空,我将不显示imageview,因此不会显示活动