【问题标题】:How can I do to insert Bitmaps into Gridview?如何将位图插入 Gridview?
【发布时间】:2019-05-24 12:09:32
【问题描述】:

我正在创建一个拼图游戏,我想要一个包含拼图图像的 GridView。

我查看了很多解决方案,但没有一个对我的情况有效。我看不到我的 gridView。

我正在使用 ImageAdapter 类将我的拼图位图放入我的 GridView 中,并且我有一个包含我所有位图的 ArrayList。

在我的主课中,我有这个

GridView gridView = findViewById(R.id.gridPiece);
                gridView.setAdapter(new GridViewAdapter(PuzzleActivity.this, R.layout.row_grid, images));
                gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        System.out.println("WORKING");
                    }
                });

我有我的 GridViewAdapter 类

@SuppressWarnings("ALL")
public class GridViewAdapter extends ArrayAdapter<Item> {

    private Context mContext;
    private int layoutResourceId;
    private ArrayList<Item> images;

    public GridViewAdapter(Context c, int layoutResourceId, ArrayList<Item> images) {
        super(c, layoutResourceId, images);
        mContext = c;
        this.layoutResourceId = layoutResourceId;
        this.images = images;
    }
    @Override
    public int getCount() {
        return 0;
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        RecordHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new RecordHolder();
            holder.imageItem = (ImageView) row.findViewById(R.id.item_image);
            row.setTag(holder);
        } else {
            holder = (RecordHolder) row.getTag();
        }

        Item item = images.get(position);
        holder.imageItem.setImageBitmap(item.getImage());
        return row;

    }

    static class RecordHolder {
        TextView imageTitle;
        ImageView imageItem;
    }
}

我的网格视图

<GridView
        android:id="@+id/gridPiece"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:columnWidth="100dp"
        android:drawSelectorOnTop="true"
        android:horizontalSpacing="10dp"
        android:numColumns="1"
        android:paddingHorizontal="10dp"
        android:paddingVertical="10dp"
        android:stretchMode="columnWidth"
        android:verticalSpacing="5dp"
        tools:ignore="MissingConstraints,UnusedAttribute"
        tools:layout_editor_absoluteY="0dp" />

以及我的 gridView 中的每个图像

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/item_image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginRight="10dp"
        tools:ignore="ContentDescription,RtlHardcoded">
    </ImageView>

</LinearLayout>

如果有人可以帮助我,将不胜感激,谢谢

【问题讨论】:

    标签: java android gridview bitmap adapter


    【解决方案1】:

    您应该像这样返回图像的计数,而不是为 getCount 返回零:

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

    在 getItem() 函数中,您应该返回项目而不是 null:

    @Override
    public Item getItem(int position) {
        return this.images.get(position);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2013-11-22
      • 2018-09-03
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      相关资源
      最近更新 更多