Данные RecyclerView перекрываются при обновлении

#android #android-recyclerview

#Android #android-recyclerview

Вопрос:

У меня возникла проблема при загрузке моих данных в RecyclerView . Если я добавляю данные, мои данные были обновлены, но они будут перекрывать друг друга. Ниже приведен код, который я реализовал для достижения того же:

 @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        getActivity().setTitle("Schedule");

           ArrayList<ScheduleDisplayDetails> get = new ArrayList<>();
                    while (c.moveToNext()) {
                        ScheduleDisplayDetails details = new ScheduleDisplayDetails();
                        details.setID(c.getString(c.getColumnIndexOrThrow("ScheduleId")));
                        details.setLocation(c.getString(c.getColumnIndexOrThrow("ScheduleLocation")));
                        details.setLatitude(c.getString(c.getColumnIndexOrThrow("ScheduleLatitude")));
                        details.setExpectedTimeOfTransaction(c.getString(c.getColumnIndexOrThrow("ScheduleExpectedTimeOfTransaction")));
                        details.setEstimatedTimeOfDeparture(c.getString(c.getColumnIndexOrThrow("ScheduleEstimatedTimeOfDeparture")));
                        details.setLongitude(c.getString(c.getColumnIndexOrThrow("ScheduleLongitude")));
                        details.setStatus(c.getString(c.getColumnIndexOrThrow("ScheduleStatus")));
                        get.add(details);
                    }
                    layoutManager = new LinearLayoutManager(getContext());
                    RecyclerView recyclerView = inflatedView.
                            findViewById(R.id.scheduleRecycler);
                    recyclerView.setLayoutManager(layoutManager);
                    recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));

                    ScheduleModuleAdapter recyclerViewAdapter =
                            new ScheduleModuleAdapter(get);

                    recyclerView.setAdapter(recyclerViewAdapter);
  

Это адаптер, который я написал для recyclerview:

              private List<NavDrawerFleetGetterSetter> navlist;

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView lat, lon, dateTime;


        public MyViewHolder(View view) {
            super(view);
            lat = view.findViewById(R.id.non_map_lat);
            lon = view.findViewById(R.id.non_map_lon);
            dateTime = view.findViewById(R.id.non_map_date_time);

        }
    }


    public NavDrawerFleetAdapter(List<NavDrawerFleetGetterSetter> navDrawerList) {
        this.navlist = navDrawerList;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.nav_drawer_non_map_card_view, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        NavDrawerFleetGetterSetter sched = navlist.get(position);
        holder.lat.setText(sched.getLat());
        holder.lon.setText(sched.getLon());
        holder.dateTime.setText(sched.getDateTime());

    }

    @Override
    public int getItemCount() {
        return navlist.size();
    }
  

это мой costumizeExemptionHandler (дизайн), используемый для обработки исключений.

          public class CustomizedExceptionHandler implements UncaughtExceptionHandler {

    private UncaughtExceptionHandler defaultUEH;
    private String localPath;
    public CustomizedExceptionHandler(String localPath) {
        this.localPath = localPath;
        //Getting the the default exception handler
        //that's executed when uncaught exception terminates a thread
        this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
    }

    public void uncaughtException(Thread t, Throwable e) {

        //Write a printable representation of this Throwable
        //The StringWriter gives the lock used to synchronize access to this writer.
        final Writer stringBuffSync = new StringWriter();
        final PrintWriter printWriter = new PrintWriter(stringBuffSync);
        e.printStackTrace(printWriter);
        String stacktrace = stringBuffSync.toString();    
        printWriter.close();

        if (localPath != null) {
            writeToFile(stacktrace);
        }

        defaultUEH.uncaughtException(t, e);
    }

    private void writeToFile(String currentStacktrace) {
        try {

            //Gets the Android external storage directory amp; Create new folder Crash_Reports
            File dir = new File(Environment.getExternalStorageDirectory(),
                    "Crash_Reports");
            if (!dir.exists()) {
                dir.mkdirs();
            }

            SimpleDateFormat dateFormat = new SimpleDateFormat(
                    "yyyy_MM_dd_HH_mm_ss");
            Date date = new Date();
            String filename = dateFormat.format(date)  ".PAkultie";

            // Write the file into the folder
            File reportFile = new File(dir, filename);
            FileWriter fileWriter = new FileWriter(reportFile);
            fileWriter.append(currentStacktrace);
            fileWriter.flush();
            fileWriter.close();
        } catch (Exception e) {
            Log.e("ExceptionHandler", e.getMessage());
        }
    }
  

это мое обновление (один раз):
введите описание изображения здесь

это мой запрос на обновление дважды: введите описание изображения здесь

это мое обновление с несколькими запросами: введите описание изображения здесь

Комментарии:

1. вам нужно показать, как вы обновляете свои данные

2. Я пытался загрузить изображения, но это не работает.. я не знаю почему, но я пытаюсь

3. Я не вижу соответствия изображений и добавляю ваш код «обновить данные»

4. вы это видели?

5. если вы видите изображения, проблема в наличии пробелов между моими данными. чем больше запрос = пространство расширяется .. ps. получение моих данных из retrofit в порядке, просто пробелы, созданные при запросе… он расширяется