У меня есть класс модели со списком, и я хочу установить данные списка в представлении переработчика, поэтому у меня также есть класс модели списка, которые необходимо установить в представлении переработчика, и мой класс модели:
@Entity public class AddMedicineData implements Parcelable{
@PrimaryKey(autoGenerate = true)
public int id;
@ColumnInfo(name = "userId")
String userId;
@ColumnInfo(name = "medid")
String medid;
@ColumnInfo(name = "medType")
String medType;
@ColumnInfo(name = "medName")
String medName;
@ColumnInfo(name = "medDose")
String medDose;
@ColumnInfo(name = "medUnit")
String medUnit;
@ColumnInfo(name = "medNotes")
String medNotes;
@ColumnInfo(name = "reminderdays")
String reminderdays;
@ColumnInfo(name = "invModelBox")
String invModelBox;
@ColumnInfo(name = "invLeft")
String invLeft;
@ColumnInfo(name = "invRemindAt")
String invRemindAt;
@ColumnInfo(name = "prescImage")
String prescImage;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPrescImage() {
return prescImage;
}
public void setPrescImage(String prescImage) {
this.prescImage = prescImage;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getInvModelBox() {
return invModelBox;
}
public void setInvModelBox(String invModelBox) {
this.invModelBox = invModelBox;
}
public String getInvLeft() {
return invLeft;
}
public void setInvLeft(String invLeft) {
this.invLeft = invLeft;
}
public String getInvRemindAt() {
return invRemindAt;
}
public void setInvRemindAt(String invRemindAt) {
this.invRemindAt = invRemindAt;
}
public AddMedicineData(){
}
@TypeConverters(Converters.class)
private ArrayList<PilltakeModel> pilldates = new ArrayList<>();
protected AddMedicineData(Parcel in) {
medid = in.readString();
medType = in.readString();
medName = in.readString();
medDose = in.readString();
medUnit = in.readString();
medNotes = in.readString();
reminderdays = in.readString();
}
public static final Creator<AddMedicineData> CREATOR = new Creator<AddMedicineData>() {
@Override
public AddMedicineData createFromParcel(Parcel in) {
return new AddMedicineData(in);
}
@Override
public AddMedicineData[] newArray(int size) {
return new AddMedicineData[size];
}
};
public String getMedid() {
return medid;
}
public void setMedid(String medid) {
this.medid = medid;
}
public String getMedType() {
return medType;
}
public void setMedType(String medType) {
this.medType = medType;
}
public String getMedName() {
return medName;
}
public void setMedName(String medName) {
this.medName = medName;
}
public String getMedDose() {
return medDose;
}
public void setMedDose(String medDose) {
this.medDose = medDose;
}
public String getMedUnit() {
return medUnit;
}
public void setMedUnit(String medUnit) {
this.medUnit = medUnit;
}
public String getMedNotes() {
return medNotes;
}
public void setMedNotes(String medNotes) {
this.medNotes = medNotes;
}
public String getReminderdays() {
return reminderdays;
}
public void setReminderdays(String reminderdays) {
this.reminderdays = reminderdays;
}
public ArrayList<PilltakeModel> getPilldates() {
return pilldates;
}
public void setPilldates(ArrayList<PilltakeModel> pilldates) {
this.pilldates = pilldates;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(medid);
parcel.writeString(medType);
parcel.writeString(medName);
parcel.writeString(medDose);
parcel.writeString(medUnit);
parcel.writeString(medNotes);
parcel.writeString(reminderdays);
}
@TypeConverter
public List<PilltakeModel> toCountryLangList(String countryLangString) {
if (countryLangString == null) {
return (null);
}
Gson gson = new Gson();
Type type = new TypeToken<List<PilltakeModel>>() {}.getType();
List<PilltakeModel> countryLangList = gson.fromJson(countryLangString, type);
return countryLangList;
}
@BindingAdapter("prescImage")
public static void setImageResource(ImageView view, String imageUrl){
if (imageUrl==null || imageUrl.equals("")){
view.setImageResource(R.drawable.empty_medical);
}
else {
Glide.with(App.getAppContext())
.load(imageUrl)
.centerCrop()
.into(view);
}
}
}
и мой адаптер выглядит следующим образом:
public class PlannedListAdapter extends RecyclerView.Adapter<PlannedListAdapter.ViewHolder> {
private List<AddMedicineData> dataModelList;
private Context context;
public PlannedListAdapter(List<AddMedicineData> dataModelList, Context ctx) {
this.dataModelList = dataModelList;
context = ctx;
}
@Override
public PlannedListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
PlannedRecyclerItemBinding binding = DataBindingUtil.inflate(
LayoutInflater.from(parent.getContext()),
R.layout.planned_recycler_item, parent, false);
return new PlannedListAdapter.ViewHolder(binding);
}
@Override
public void onBindViewHolder(PlannedListAdapter.ViewHolder holder, int position) {
AddMedicineData dataModel = dataModelList.get(position);
/* holder.itemRowBinding.timePill.setText();*/
for (int j=0;j<dataModelList.get(position).getPilldates().size();j++){
String timeList = dataModelList.get(position).getPilldates().get(j).getPilltime();
Log.d("@@PillTimes", timeList);
holder.itemRowBinding.timePill.setText(dataModel.getPilldates().get(j).getPilltime());
}
holder.bind(dataModel);
}
@Override
public int getItemCount() {
return dataModelList.size();
}
Внутри цикла адаптера нет правильного списка, он повторяет те же данные последнего индекса, а XML:
<data>
<variable
name="medicineModel"
type="com.kulsoft.care4cute.databinding.AddMedicineData" />
<!-- <variable
name="pillTakeModel"
type="com.kulsoft.care4cute.models.MedicalModel.PilltakeModel" />-->
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/lin_medicine"
android:background="@color/white"
android:layout_marginTop="@dimen/padding_10"
android:layout_marginStart="@dimen/padding_10"
android:layout_marginEnd="@dimen/padding_10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/imgClick"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/clock"
android:layout_width="@dimen/dimen_20dp"
android:layout_height="@dimen/dimen_20dp">
</ImageView>
</RelativeLayout>
<LinearLayout
android:orientation="vertical"
android:padding="@dimen/padding_10"
android:layout_below="@+id/imgClick"
android:layout_width="match_parent"
android:layout_height="100dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.kulsoft.care4cute.fonts.OpenSensRegular
android:layout_weight="1"
android:text="@{medicineModel.medName}"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensRegular>
<com.kulsoft.care4cute.fonts.OpenSensSemiBold
android:id="@+id/timePill"
android:gravity="end"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensSemiBold>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.kulsoft.care4cute.fonts.OpenSensThin
android:layout_weight="1"
android:text="@{`1 ` +medicineModel.medType}"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensThin>
<com.kulsoft.care4cute.fonts.OpenSensThin
android:layout_weight="1"
android:gravity="center"
android:text="@{medicineModel.medDose}"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensThin>
<com.kulsoft.care4cute.fonts.OpenSensThin
android:layout_weight="1"
android:gravity="start"
android:text="@{medicineModel.medUnit}"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensThin>
<com.kulsoft.care4cute.fonts.OpenSensThin
android:gravity="end"
android:layout_weight="1"
android:text="Medication Reminder"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.kulsoft.care4cute.fonts.OpenSensThin>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
<View
android:visibility="gone"
android:layout_below="@+id/lin_medicine"
android:layout_width="match_parent"
android:background="@color/black"
android:layout_marginTop="@dimen/padding_10"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_height="0.1dp"/>
</RelativeLayout>
Я получаю все значения правильно только мне нужно установить Данные списка класса модели, у которых есть время в списке, правильное значение настройки адаптера
мой adpter Log.dэто:
ute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.021 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.022 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.022 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.022 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.022 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.022 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:48 AM
2019-10-02 10:18:16.029 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 9:49 AM
2019-10-02 10:18:16.035 21598-21598/com.kulsoft.care4cute D/@@PillTimes: 10:21 AM
Пожалуйста, помогите заранее поблагодарить вас Спасибо за каждый ваш комментарий и ответ