【问题标题】:Gridview of ImageViews that each image opens a different activity每个图像打开不同活动的 ImageViews 的 Gridview
【发布时间】:2018-07-20 21:12:09
【问题描述】:

我正在尝试实现一个 Gridview,它显示来自可绘制对象的预定义 ImagesViews 数组,并且我希望每个 ImageView 在 onClick 打开一个活动时,您可以在下面看到我的代码...

ImageAdapter.java

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 数据库请求的 ImageViews 并在单击时打开特定活动来实现这一点。

我正在考虑通过传递一个整数来做到这一点,例如1,2,3,4... 并将其作为 parent_category_id 的 SQL 参数并动态显示 child_categories_ids

【问题讨论】:

    标签: java android gridview imageview


    【解决方案1】:

    有一个非常简单的解决方案。不要将 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;
    
    }
    

    现在,将要打开的活动分配给网格视图中的每个元素。这应该会让你更容易。

    【讨论】:

    • 感谢您的回复。我了解您的代码,但我无法指定要静态打开的活动。因为我要从 SQLite 数据库中检索一个类别。如果类别为空,我不会显示图像视图因此活动
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多