#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 в порядке, просто пробелы, созданные при запросе… он расширяется