仅包含图像的列表视图

listView with just images

我正在尝试创建一个只有图像的列表视图。请这不是一个愚蠢的问题,因此我们将不胜感激。我认为我的代码是正确的,但是当我 运行 它时,它只显示 contentView 但为空。它不显示我告诉它的图像 show.I 创建了 java 文件,然后创建了两个 xml 文件,其中一个带有 listView,它是 java 文件的 contentView ,另一个用于 listView 的单行。

我的 java 文件:

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.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;

public class Craft extends Activity {
int[]images={R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five,R.drawable.six,R.drawable.seven;

ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.craft);
    listView=(ListView)findViewById(R.id.listView);
    MyAdapter adapter=new MyAdapter(Craft.this,images);
    listView.setAdapter(adapter);

}
class MyAdapter extends ArrayAdapter<String> {

    Context c;
    int[] images;
    int count = 0;

    public MyAdapter(Context c,int imgs[]) {
        super(Craft.this, R.layout.single_row);
        this.c = Craft.this;
        this.images = imgs;

    }

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

        LayoutInflater inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inflater.inflate(R.layout.single_row, parent, false);

        Log.d("Plates", "Count: " + count++);

        ImageView myImage = (ImageView) row.findViewById(R.id.imageView23);
        myImage.setImageResource(images[position]);

        return row;
    }

}
}

我的craft.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="@drawable/woodcrop">
<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_gravity="center_vertical"
    android:layout_weight="1" />

我的 single_row.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:background="@drawable/woodcrop">
<ImageView
    android:layout_margin="20dp"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:src="@drawable/one"
    android:id="@+id/imageView23" />

感谢任何帮助!

您应该将 ListView 高度更改为:

 <ListView
 .
 .
 .
 android:layout_height="match_parent"/>

我明白了,您没有在适配器中重写 getCount(): 所以你的列表视图不知道有项目。

您应该将此添加到您的适配器中:

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

很想使用这个超级语句
超级(c, R.layout.single_row,imgs);