Java 基于JSON键向ViewPager动态添加选项卡
我用JSON获取不同事件的JSON数据,并根据下面附带的格式,根据每个事件中的键创建了一个事件类。然后,在解析JSON时,我将所有事件数据放入一个events ArrayList,稍后我将在一个ListView中使用扩展BaseAdapter的自定义适配器显示这些数据—这里一切正常运行,事件显示在ListView中Java 基于JSON键向ViewPager动态添加选项卡,java,android,json,android-fragments,android-viewpager,Java,Android,Json,Android Fragments,Android Viewpager,我用JSON获取不同事件的JSON数据,并根据下面附带的格式,根据每个事件中的键创建了一个事件类。然后,在解析JSON时,我将所有事件数据放入一个events ArrayList,稍后我将在一个ListView中使用扩展BaseAdapter的自定义适配器显示这些数据—这里一切正常运行,事件显示在ListView中 但我现在要做的是创建一个ViewPager,ViewPager中的选项卡是根据日期动态生成的。与计划中有3个不同的日期类似,一些事件发生在一个日期,而另一些事件发生在另一个日期,Vi
但我现在要做的是创建一个ViewPager,ViewPager中的选项卡是根据日期动态生成的。与计划中有3个不同的日期类似,一些事件发生在一个日期,而另一些事件发生在另一个日期,ViewPager将获得3个选项卡,并且在每个选项卡中,ListView中仅显示相应日期的事件,因此用户可以通过选择该日期选项卡来查看特定日期的事件。不幸的是,我一直被困在它,无法实现它 请指导和帮助我,我应该如何继续实现这一点,即标签是根据不同的日期动态生成的,只显示各自的事件 p、 事件JSON有一个关键日期 提前感谢: 我解析以获取日期的计划的JSON:
[
{
"title": "Opening",
"subtitle": "might be there",
"start": "13:30",
"end": "14:30",
"location": "B01.063",
"date": "2014-08-01",
"authors": ["George Martin"],
"type": "talk",
"abstract": "http://..."
},
{
"title": "Coffe break",
"subtitle": "might be there",
"start": "16:15",
"end": "17:00",
"location": "Crown room",
"date": "2014-08-02",
"authors": [],
"type": "break",
"abstract": "http://..."
}
]
事件类别:
public class EventScheduleItem {
private String title;
private String subtitle;
private String start;
private String end;
private String location;
private String date;
private String authors;
private String type;
private String eventAbstract;
//here are getter/setters and constructor for this class
}
这就是我创建事件Arraylist的方式:
列表事件记录数组=新数组列表
编辑:
在活动中尝试以下方法:
String[] tabs = {"Tab 1", "Tab 2", "Tab 3"};
mAdapter = new CustomPagerAdapter(getSupportFragmentManager(), tabs);
在你的寻呼机适配器中
private class CustomPagerAdapter extends FragmentStatePagerAdapter {
String[] tabs;
public CustomPagerAdapter(FragmentManager fragmentManager, String[] tabs) {
super(fragmentManager);
this.tabs = tabs;
}
@Override
public Fragment getItem(int position) {
//Something should go there which I don't know what should i do to get events for the date
}
@Override
public int getCount() {
return tabs.length();
}
@Override
public CharSequence getPageTitle(int position){
return tabs[position];
}
}
我一直被它卡住,无法实现它-请展示您尝试的PagerAdapter实现,并解释您遇到的问题。@Commonware我试图实现它的脉络-不知道如何通过它来实现它,因为我的事件arraylist有事件,但是如果我重写getcount并返回不起作用的数组长度。先生,请帮助我,我将非常感激。我相信你将指导我的解决方案将是最好和最优化的解决方案之一。@commonware先生,请指导我,我该如何继续。那不起作用意味着什么?您已经告诉了我们很多我们不需要知道的事情,例如JSON格式,但几乎没有告诉我们您尝试了什么,特别是遇到了什么问题。在这里,您已经回答了115个关于堆栈溢出的问题,所以您肯定知道什么是一个好问题。给我们看一下你的PagerAdapter,告诉我们你用它做了什么和没有做过什么,比没有用的更详细。@Commonware先生,我是Android新手,还在学习这些概念。问题主要在于我需要使用的实现目标的方法。比如,我应该首先遍历events数组以找到不同的日期,然后创建单独的数组,例如arrayX,并维护来自主数组调用的事件索引,即arrayY和date在单独的数组中,然后,它会在每个事件中加载相同的片段,然后从arrayX获取该日期的事件索引,然后从arrayY查找事件吗?我编辑了问题并添加了我正在尝试的页面代码。请帮忙
private class CustomPagerAdapter extends FragmentStatePagerAdapter {
String[] tabs;
public CustomPagerAdapter(FragmentManager fragmentManager, String[] tabs) {
super(fragmentManager);
this.tabs = tabs;
}
@Override
public Fragment getItem(int position) {
//Something should go there which I don't know what should i do to get events for the date
}
@Override
public int getCount() {
return tabs.length();
}
@Override
public CharSequence getPageTitle(int position){
return tabs[position];
}
}