java - 带有 4 个项目的 GridView android

标签 java android gridview uiimageview

我正在尝试制作一个 GridView ,因为这对于更多设备来说更好。我已经尝试在界面生成器中添加按钮(作为 ImageViews,因为我已将它们添加为 ImageButtons,但大小不好),结果在此屏幕中:/image/bRkYd.png

任何人都可以帮助我在 GridView 中制作这个,完全相同但在所有设备上兼容。

提前致谢;)!

这是图像适配器:

public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] buttonValues;

public ImageAdapter(Context context, String[] buttonValues) {
    this.context = context;
    this.buttonValues = buttonValues;
}

public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View gridView;

    if (convertView == null) {

        gridView = new View(context);

        // get layout from mobile.xml
        gridView = inflater.inflate(R.layout.mobile, null);


        // set image based on selected text
        ImageView imageView = (ImageView) gridView
                .findViewById(R.id.grid_item_image);

        String button = buttonValues[position];



        if (button.equals("homework")) {
            imageView.setImageResource(R.drawable.homework);
        } else if (button.equals("schedule")) {
            imageView.setImageResource(R.drawable.schedulebut);
        } else if (button.equals("planner")) {
            imageView.setImageResource(R.drawable.plannerbut);
        } else {
            imageView.setImageResource(R.drawable.settingsbut);
        }

    } else {
        gridView = (View) convertView;
    }

    return gridView;
}

@Override
public int getCount() {
    return buttonValues.length;
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

}

这是我在 onCreate 中的方法:

static final String[] MOBILE_OS = new String[] { "Homework", "Schedule",
        "Planner", "Settings" };
private void setGridView() {
    gridView = (GridView) findViewById(R.id.gridView1);

    gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));

    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Toast.makeText(getApplicationContext(), "LOL!", Toast.LENGTH_SHORT).show();

        }
    });

}

最佳答案

由于您尝试使用 2X2 网格 并且只有 4 个元素,因此请使用 android:numColumns="2" 作为 GridView 的一个属性。

另外,还有这个优秀的tutorial on GridViews !

仅在网格中实现图像的代码 fragment :

public class ImageAdapter extends BaseAdapter {
    private Context context;


    public ImageAdapter(Context context) {
        this.context = context;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {

            gridView = new View(context);

            // get layout from mobile.xml
            gridView = inflater.inflate(R.layout.mobile, null);


            // set image based on selected text
            ImageView imageView = (ImageView) gridView
                    .findViewById(R.id.grid_item_image);



            if (mobile.equals("Windows")) {
                imageView.setImageResource(R.drawable.windows_logo);
            } else if (mobile.equals("iOS")) {
                imageView.setImageResource(R.drawable.ios_logo);
            } else if (mobile.equals("Blackberry")) {
                imageView.setImageResource(R.drawable.blackberry_logo);
            } else {
                imageView.setImageResource(R.drawable.android_logo);
            }

        } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

    @Override
    public int getCount() {
        return mobiles.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

}

编辑:您在所有按钮中获得相同的图像,因为您匹配了在不同情况下编写的字符串。 (您在一个地方使用“家庭作业”,在另一个地方使用“家庭作业”)

所以,使用static final String[] MOBILE_OS = new String[] { "homework", "schedule", "planner", "settings" };它会工作得很好。

关于java - 带有 4 个项目的 GridView android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14425063/

相关文章:

asp.net - 不可选中的 RadioButtons 与独占的 Checkboxes

Java Swing : Set starting time on timer and loop it

java - 使用另一个类JFrame

android - Viewpager 中 fragment 的 OptionsMenu 显示彼此的按钮

android - 如何更改 ListView 的选定项的颜色(这不是自定义 ListView)

java - Android Studio : How to resize an image before uploading to server?

android - 如何在 android 中使用通用图像加载器显示视频和图像缩略图?

java - Hibernate - 具有集合的实体

java - 使用消费者时无法解析方法

html - 给定布局的 Bootstrap 网格(或 IE 兼容的 CSS 网格)