gpt4 book ai didi

java - 如何将位图插入 Gridview?

转载 作者:行者123 更新时间:2023-12-02 05:16:02 25 4
gpt4 key购买 nike

我正在创建一个拼图游戏,我想要一个包含拼图图像的 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

<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>

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

最佳答案

不应为 getCount 返回零,您应该返回图像计数,如下所示:

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

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

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

关于java - 如何将位图插入 Gridview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56292434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com