这是对数据进行排序和显示的高级数据操作。我有一个对象的数组列表,可以说
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 < String, ArrayList < Details Object > >
。将类型的对象列表隔离到List中,然后使用关键的Exercise type将其添加到此HashMap中。当您必须在recyclerview中显示此数据时,可以使两个视图持有者一个显示“锻炼”标题和人数,而另一个将显示人员的细节。
按照these之类的示例生成一个列表,该列表将传递到您的回收者视图适配器。
您必须先添加两项检查,然后再进行日期检查。创建两个单独的列表,一个用于练习,第二个用于数据。
ArrayList<String> exerciseType=new ArrayList()
ArrayList<String> dateList=new ArrayList()
现在将所有练习添加到arrrayList中,但要添加contains检查以避免重复的日期相同。现在使用循环并为每个练习创建一个单独的数组,并将其保存到HashMap<String,ArrayList<DetailModel>> exerciseArrays=new HashMap()