如何将文本视图添加到我的图像中?交错的 GridView/RecycleView

问题描述

我在尝试为我的 StaggeredGridView 提供图像和相关文本视图作为标题时遇到了一些麻烦。我已经用图片设置了 StaggeredGridView,但是每当我尝试添加文本时,应用就会崩溃。

所以,我有两个问题。

主要问题: 我如何给它一个文本视图?我希望它在顶部有一个图像视图,在它下面有一个文本视图。

我现在拥有的代码,因为我删除了导致它崩溃的文本:

Activity_main.xml:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycleViewStagged"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/Tab_bar" />

recyclerview_row.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="15dp">

    <ImageView
        android:id="@+id/imgView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/k1"/>
</RelativeLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {

    // creating recyclerviewadapter object
    RecyclerViewAdapter recyclerViewAdapter;

    // Creating arraylist for images
    ArrayList<Integer> ImageList;

    // Creating recycler view object
    RecyclerView recyclerView;

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

        ImageList = new ArrayList<>(Arrays.asList(R.drawable.k1,R.drawable.k2,R.drawable.k3,R.drawable.k4,R.drawable.k5,R.drawable.k6,R.drawable.k7,R.drawable.k8,R.drawable.k9));

        recyclerView = findViewById(R.id.recycleViewStagged);

        // Setting up the layoutManager for our recyclerView
        RecyclerView.LayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);
        recyclerViewAdapter = new RecyclerViewAdapter(this,ImageList);

        // setting the recyclerviewadapter
        recyclerView.setAdapter(recyclerViewAdapter);
    }

RecyclerViewAdapter.java

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

    //ArrayList for images
    ArrayList<Integer> Image;
    Context context;

    // Constructor for adapter
    public RecyclerViewAdapter(Context context,ArrayList<Integer> Image) {
        super();
        this.context = context;
        this.Image = Image;
    }

    public ViewHolder onCreateViewHolder(ViewGroup viewGroup,int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerview_row,viewGroup,false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    public void onBindViewHolder(ViewHolder viewHolder,int i) {
        // Setting image resource
        viewHolder.imgview.setimageResource(Image.get(i));
    }

    public int getItemCount() {
        return Image.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView imgview;
        public ViewHolder(View itemView) {
            super(itemView);

            // Getting reference to the ImageView
            imgview = (ImageView) itemView.findViewById(R.id.imgView);
        }
    }
 }

第二个问题: 我注意到当我使用 android:adjustViewBounds="true" 时,我的程序/模拟器会减慢到大约 2-3fps 并最终崩溃。但是,如果我删除它,我的图像会变形并被拖出。可能是什么问题,有什么办法可以解决吗?

我希望你能理解并能提供帮助:-)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)