如何像GridView一样使用RecyclerView?

问题描述

我的数据库就是这样。

enter image description here

当我在SearchView上搜索我的名字时,我会向您显示数据。

这是适配器的布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@+id/nameText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_green_light"
        android:gravity="center"
        android:text="Name"
        android:textColor="@android:color/white"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/dataText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:text="Data No."
        android:textColor="@android:color/white"
        android:textSize="20sp" />
</LinearLayout>

一个nameText和一个dataText。

如果我搜索JOHN1,希望他会像这样。

就像GridView。

JOHN1 JOHN1 JOHN1 JOHN1
10    20    30    40

但是我不知道该如何处理Adapter的onBindViewHolder。

它是适配器。

public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {

    List<Data> dataList;
    Context context;

    public Adapter(List<Data> dataList,Context context) {
        this.dataList = dataList;
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view,parent,false);

        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder,int position) {
//        holder.nameText.setText(dataList.get(position).getName());
//        holder.dataText.setText(dataList.get(position).getData1());
//        holder.dataText.setText(dataList.get(position).getData2());
//        holder.dataText.setText(dataList.get(position).getData3());
//        holder.dataText.setText(dataList.get(position).getData4());
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        TextView nameText,dataText;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);

            nameText = itemView.findViewById(R.id.nameText);
            dataText = itemView.findViewById(R.id.dataText);
        }
    }
}

请帮助我...

解决方法

您可以使用多类型支架

好的示例在这里: sample

,

要像public class SwaggerExcludeFilter : ISchemaFilter { public void Apply(OpenApiSchema schema,SchemaFilterContext context) { switch (context.Type.Name) { case "HeaderResponse": foreach (var property in schema.Properties) { if (property.Value.Type == "array") { var array = new OpenApiArray(); array.Add(new OpenApiString("item1")); array.Add(new OpenApiString("item2")); array.Add(new OpenApiString("item3")); property.Value.Example = array; } } break; } } } 一样使用RecyclerView

GridView

但是在您的情况下,我看到您的mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(),NUMBER_OF_COLUMN)); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); mRecyclerView.setAdapter(mAdapter); 的存储方式类似于1个对象database包含responsenamedata1data2data3个字段。

data4

如果要显示为

{
   "response":{
      "name":"John","data1":10,"data2":20,"data3":30,"data4":40
   }
}

不要使用JOHN1 JOHN1 JOHN1 JOHN1 10 20 30 40 Gridlayout应该用于您的数据类似的情况

Gridlayout

当然,您可以将对象{ "response":[ { "name":"John","data":10 },{ "name":"John","data":20 },"data":30 },"data":40 } ] } 转换为数组对象,例如json以下,但这不是必需的。通常,最好使用response

,

类似表格的表格是一种非常古老的样式,根据设计准则,该表格不被接受。建议使用具有多个textviews的单张卡,其数据可以使用viewHolder方法中的onBindViewHolder进行设置。

在此链接上查看Cards

在此链接上查看how to create a card-based layout

Staggered可以使用GridLayout Manager RecyclerView,这样可以很好地显示数据。

您可以在this article中查看两种样式

现在,如果所有这些都不会使您信服,并且您想坚持您提到的设计,那么您可以将ViewHolderLinearLayout定向为horizontal通过遍历对象并设置addview的值来动态地titledescriptiontitle description在这种情况下,标题将是重复的,并根据设计在屏幕上使用了不必要的空间。因此,建议您不要使用此设计。

让我知道这是否有帮助。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...