如何解决如何像GridView一样使用RecyclerView?
我的数据库就是这样。
当我在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>
如果我搜索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
包含response
,name
,data1
,data2
,data3
个字段。
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
可以使用Grid
或Layout Manager
RecyclerView
,这样可以很好地显示数据。
您可以在this article中查看两种样式
现在,如果所有这些都不会使您信服,并且您想坚持您提到的设计,那么您可以将ViewHolder
和LinearLayout
定向为horizontal
通过遍历对象并设置add
和view
的值来动态地title
与description
和title
description
。 在这种情况下,标题将是重复的,并根据设计在屏幕上使用了不必要的空间。因此,建议您不要使用此设计。
让我知道这是否有帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。