有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案