【问题标题】:Find empty slot in a List of Object for a schedule in Java在 Java 中的计划的对象列表中查找空槽
【发布时间】:2017-11-29 09:15:10
【问题描述】:

我正在用 Java 编写一个应用程序,我想在其中显示商店的完整时间表以及人何时进出以及何时无人。请检查所附图片。在此处输入图片说明

人员列表在 JSON 文件中:

{
  "venue": {
    "id": 123456,
    "name": "Foursquare HQ",
    "openTime": 1479798000000,
    "closeTime": 1479864600000,
    "visitors": [
      {
        "id": 1,
        "name": "Dave",
        "arriveTime": 1479805200000,
        "leaveTime": 1479816000000
      },
      {
        "id": 2,
        "name": "Elizabeth",
        "arriveTime": 1479801600000,
        "leaveTime": 1479819600000
      },
      {
        "id": 3,
        "name": "Ben",
        "arriveTime": 1479826800000,
        "leaveTime": 1479830400000
      },...

这个 json 被提取出来,可以通过一个叫做 getVisitors 的方法访问,它返回一个 List。 Person 类声明如下:

public final class Person{
    private int id;
    private String name;
    private long arriveTime;
    private long leaveTime;

    public Person(int id, String name, long arriveTime, long leaveTime){
        this.id = id;
        this.name = name;
        this.arriveTime = arriveTime;
        this.leaveTime = leaveTime;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public long getArriveTime() {
        return arriveTime;
    }

    public long getLeaveTime() {
        return leaveTime;
    }
}

我的问题是如何添加“无访客”项目?第一个和最后一个可以使用

list.add(idx, element)

但我没有看到一个简单的算法可以在白天找到访客之间的空位。

当商店内没有访客出现时,必须显示“没有访客”。基本上是 2 位访客之间的任何差距,并且基于商店的整体 openTime 和 closeTime

我正在使用 RecycledView 将信息显示为列表,如下所示:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();

    private RecyclerView rvRecyclerView;
    private static PersonAdapter personAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rvRecyclerView = findViewById(R.id.rvRecyclerView);
        rvRecyclerView.setLayoutManager(new LinearLayoutManager(this));


        if(personAdapter == null)
            personAdapter = new PersonAdapter();

        //set the adapter of the recycler view to push data.
        rvRecyclerView.setAdapter(personAdapter);

        Log.d(TAG, "ON CREATE CALL");
        new VenueFetcher(this).execute();
    }

VenueFetch 是一个 AsyncTask,负责从 JSON 文件中提取 JSON 并使用调用来

    mainActivity.personAdapter.notifyDataSetChanged();

更新部分工作的列表

有什么想法吗?

【问题讨论】:

    标签: java android json list


    【解决方案1】:

    您无需将“无访客”项添加到您的列表中。只需根据他们的到达时间对人员列表进行排序,然后遍历列表并检查当前人员的离开时间是否小于列表中下一个人员的到达时间。

    【讨论】:

    • 好的,但我需要在回收视图的列表显示中显示它。我如何显示它们是我没有将它们插入适配器使用的列表中
    • 然后您可以为列表中的每个“currentPerson[leaveTime]
    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2022-01-07
    • 2011-07-27
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多