【发布时间】:2019-12-05 03:30:34
【问题描述】:
这是对数据进行排序和显示的高级数据操作。我有一个对象数组列表让我们说
ArrayList<PersonDetails> personList= new ArrayList<>();
personList.add(name:"George",date:"25-DEC-2019",duration:"30mins",time:"9:45",slot:"Morning",exercise-type:"Leg-Exercise");
personList.add(name:"Ramesh",date:"25-DEC-2019",duration:"30mins",slot:"9:45","Morning",exercise-type:"Leg-Exercise");
personList.add(name:"Joslin",date:"25-DEC-2019",duration:"30mins",slot:"9:45","Morning",exercise-type:"Arms-Exercise");
personList.add(name:"Hrithik",date:"25-DEC-2019",duration:"30mins",slot:"9:45","Morning",exercise-type:"Arms-Exercise");
所有数据类型都是 string.so,我必须在这个列表上进行操作,并在 recyclerview 上显示类似这样的最终结果。我想将具有相同运动类型并且在一个对象中有个体的人分组。我也想统计一下有相同运动类型的人。
Details
-----------------------------------------------------
Exercise-type Leg-exercise
Person 2
-----------------------------------------------------
George
Date 25-Dec-2019
Duration 30mins
Time 9:45
Slot Morning
Ramesh
Date 25-Dec-2019
Duration 30mins
Time 9:45
Slot Morning
Details
-----------------------------------------------------
Exercise-type Arms-exercise
Person 2
-----------------------------------------------------
Joslin
Date 25-Dec-2019
Duration 30mins
Time 9:45
Slot Morning
Hrithik
Date 25-Dec-2019
Duration 30mins
Time 9:45
Slot Morning
这是我的 item_detail_order.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/fieldItems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:layout_marginBottom="16dp"
>
<TextView
android:id="@+id/detail_item_key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:fontFamily="@font/montserrat_medium_0"
android:text="detail_items"
android:textColor="@color/colorBody">
</TextView>
<TextView
android:id="@+id/detail_item_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="8dp"
android:fontFamily="@font/montserrat_semibold_0"
android:text="detail_values">
</TextView>
</RelativeLayout>
这里的 id - detail_item_key 是例如名称或持续时间,或插槽等。 并且 id - detail_item_value 是例如来自名称、持续时间和插槽的对应值。
DetailObjectAdapter.java
public class DetailsObjectAdapter extends RecyclerView.Adapter<DetailsObjectAdapter.DetailsObjectViewHolder> {
ArrayList<DetailsObject> detailsObjectList = new ArrayList<>();
public DetailsObjectAdapter(ArrayList<DetailsObject> detailsList) {
detailsObjectList = detailsList;
}
@NonNull
@Override
public DetailsObjectViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.item_details_summary, parent, false);
return new DetailsObjectViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull DetailsObjectViewHolder holder, int position) {
DetailsObject detailsObject = detailsObjectList.get(position);
holder.detailsItemKey.setText(detailsObject.getNamekey());
holder.detailsItemValue.setText(detailsObject.getNameValue());
}
@Override
public int getItemCount() {
return detailsObjectList.size();
}
public class DetailsObjectViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.detail_item_key)
TextView detailsItemKey;
@BindView(R.id.detail_item_value)
TextView detailsItemValue;
public DetailsObjectViewHolder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
我尝试使用 hashmap 对运动类型进行分组,但它会产生一个全新的字符串。然后我必须逐行操作它。我一般不喜欢。 我真的不希望你们都为我编写整个代码。只是一种告诉我如何解决这个问题的方法?像伪代码之类的?
DetailsObject.java
public class DetailsObject {
String namekey;
public DetailsObject(String namekey, String nameValue) {
this.namekey = namekey;
this.nameValue = nameValue;
}
public String getNameValue() {
return nameValue;
}
public String getNamekey() {
return namekey;
}
String nameValue;
}
【问题讨论】:
-
您必须添加两个检查,第一个用于锻炼,第二个用于日期。创建两个单独的列表,一个用于锻炼,第二个用于数据。
标签: android xml android-recyclerview