Android GridView 为空

标签 android android-gridview

编辑:此问题已解决,因此我原始帖子中的代码不再适用。感谢所有做出贡献的人。

首先,我检查了其他类似的问题,但它们要么与我的不匹配,要么使用 BaseAdapter。我想做的是将文本图像组合显示为 GridView 的一部分。实际的应用程序更大,但我的问题是 GridView 在第一个 Activity 中是空白的!

如果有人可以快速查看并告诉我出了什么问题,我将不胜感激。

用于 GridView 元素的布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/iv_grid"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/tv_grid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

第一个Activity的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".CategoriesActivity" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="54dp"
        android:text="Select a category to learn more" />

    <TextView
        android:id="@+id/tv_grid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="26dp"
        android:text="Lessons from History"
        android:textSize="18sp" />

    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="25dp"
        android:numColumns="3" >
    </GridView>

</RelativeLayout>

最后是 Java 文件:

package com.example.historicpersonalities;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;

public class CategoriesActivity extends Activity {

    GridView gv_categories;
    public int selected; //which category is selected [0-4]?
    String[] data; //holds the data for GridView

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_categories);

        populate();
        selected = -1;

        gv_categories = (GridView) findViewById(R.id.gridView1);
        gv_categories.setAdapter(new MyAdapter(this, 
                android.R.layout.simple_expandable_list_item_1));

        gv_categories.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int index,
                    long arg3) {

            }
        });
    }

    class MyAdapter extends ArrayAdapter<String> {

        public MyAdapter(Context context, int textViewResourceId) {
            super(context, textViewResourceId);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View v = inflater.inflate(R.layout.layout_grid_scheme, null);

            TextView item = (TextView) findViewById(R.id.tv_grid);
            item.setText(data[position]);

            ImageView img = (ImageView) findViewById(R.id.iv_grid);
            img.setImageResource(R.drawable.dummy);

            Log.d("ankush", ""+position);

            return v;
        }

    }

    private void populate() {
        data = new String[5];
        data[0] = "Writers";
        data[1] = "Painters";
        data[2] = "Conquerors";
        data[3] = "Chemists";
        data[4] = "Actors";
    }
}

最佳答案

我认为问题是你的gridView的高度。 GridView 是一个可滚动的容器,可以包含任意高度的任意数量的内容。尝试为您的 gridView 设置背景颜色,您会看到屏幕上没有 gridview 。 这是因为你对gridview使用了wrap_content,但这是不正确的。

关于Android GridView 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17321701/

相关文章:

javascript - React-Native:for 循环中的 this.something.map 可以访问 .json 文件中数据数组中的数据..有人可以建议一个示例代码吗?

android - 以编程方式修改 overridePendingTransition 动画

android - XML 代码错误?

android - 从图库中选择图像后未在 gridview 中设置

android - 如何从 SD 卡中检索文本并相应地设置 TextView ?

android - 应用程序在强制关闭时如何显示通知

android - 如何在抽屉 Handlebars 上制作多个按钮?

android - 当 GridView 滚动时,它会更改其 View 的激活状态

安卓 : GridView was Not Marked insit of that it load to empty Activity

android - 图像的 GridView 没有得到刷新