Ошибка в заданном значении в представлении рециркулятора с использованием привязки данных - PullRequest
0 голосов
/ 02 октября 2019

У меня есть класс модели со списком, и я хочу установить данные списка в представлении переработчика, поэтому у меня также есть класс модели списка, которые необходимо установить в представлении переработчика, и мой класс модели:

@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

Пожалуйста, помогите заранее поблагодарить вас Спасибо за каждый ваш комментарий и ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...