java更新一个RecyclerView项,它没有数据更改,只有UI元素
我有一个活动时间线,想用一个活动、in_活动和pre_活动标记更新时间线标记。问题是我必须“重新启动”片段才能看到标记的变化。有没有可能亲眼目睹这些变化
这些事件具有时间戳和持续时间。如果当前事件处于活动状态,我想显示活动的_标记,如果事件完成,则显示活动的_标记,未来的事件将显示未来的_标记
适配器:
@Override
public void onBindViewHolder(@NonNull TimeLineViewHolder holder, int position) {
TimeLineData timeLineData = feedList.get(position);
Calendar currentDate = Calendar.getInstance();
Calendar endDate = (Calendar) timeLineData.getRealTime().clone();
endDate.add(Calendar.MINUTE, 5); // Event Duration
if (currentDate.after(endDate)) {
holder.timelineView.setMarker(holder.itemView.getContext().getDrawable(R.drawable.ic_marker_inactive));
}
if (currentDate.after(timeLineData.getRealTime()) && currentDate.before(endDate)) {
holder.timelineView.setMarker(holder.itemView.getContext().getDrawable(R.drawable.ic_marker_active));
}
if (currentDate.before(timeLineData.getRealTime())) {
holder.timelineView.setMarker(holder.itemView.getContext().getDrawable(R.drawable.ic_marker_future));
}
holder.title.setText(timeLineData.getStartup1() + " VS " + timeLineData.getStartup2());
holder.time.setText(timeLineData.getTime());
}
时间线数据。getTime是格式化的时间字符串
时间线数据。getRealTime是日历对象
片段:
public class TimeLineFragment extends Fragment {
private List<TimeLineData> dataList = new ArrayList<>();
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View timeLineView = inflater.inflate(R.layout.timeLine_recycler, container, false);
RecyclerView recyclerView = timeLineView.findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
setUpEntries(recyclerView);
return timeLineView;
}
private void setUpEntries(RecyclerView recyclerView) {
TimeLineData model1 = new TimeLineData();
...
model1.setTime(2019, Calendar.FEBRUARY, 12, 10, 0);
setTime()
获取如下数据(年、月、日、小时、分钟)
共 (0) 个答案