我要求在垂直寻呼机的页面之间显示广告。例如像inshorts这样的新闻应用程序。任何方法都可以做到这一点。
用于新闻页面的数据是标题、内容和日期,我在jsonarray中获取了多个新闻的数据。我的要求是在寻呼机适配器中添加一个不同的页面(广告页面)。例句:看了5遍新闻之后。我应该得到广告页面,它与新闻页面不同
发布于 2019-02-20 17:57:29
首先,您应该使json Array具有通告数据包括
例如:没有广告的json数组
{ "s":真,"d":{ "id":"203e63d7-3672-4fb7-a899-3ebd281a0e4c","title":"Title 1","description":"Description“},{ "id":"203e63d7-3672-4fb7-a899-3ebd281a0e4c","title":"Title 1","description":"Description“},{ "id":"203e63d7-3672-4fb7-a899-3ebd281a0e4c","title":"Title 1","description":"Description”},{ "id":"203e63d7-3672-4fb7-a899-3ebd281a0e4c","title":"Title 1","description":"Description“},{ "id":"203e63d7-3672-4fb7-a899-3ebd281a0e4c","title":"Title 1","description":"Description”}}
现在使用此参数创建自定义类:标题、类型、描述、advertise_title和advertise_url
List<CustomObj> list=new ArrayList<>();
for(int i=0;i<jsonArray.size,i++){
int j=i;
j++;
if(j%5==0){
list.add(new CustomObj(jsonArray.get(i).getId(),jsonArray.get(i).getTitle(),jsonArray.get(i).getDescription(),1,"Advertise Title","URL")
}else{
list.add(new CustomObj(jsonArray.get(i).getId(),jsonArray.get(i).getTitle,jsonArray.get(i).getDescription,0,"","")
}
} 带有播发列表的json数组
{
"s": true,
"d": [
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "Description",
"advertise_img_url": "https://www.pexels.com/photo/nature-red-love-romantic-67636/a.jpg"
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "Description",
"advertise_img_url": "https://www.pexels.com/photo/nature-red-love-romantic-67636/a.jpg"
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 1,
"description": "Description",
"advertise_title": "Description",
"advertise_img_url": "https://www.pexels.com/photo/nature-red-love-romantic-67636/a.jpg"
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
},
{
"id": "203e63d7-3672-4fb7-a899-3ebd281a0e4c",
"title": "Title 1",
"type": 0,
"description": "Description",
"advertise_title": "",
"advertise_img_url": ""
}
]
}在ViewPagerAdapter中,
@Override
public Object instantiateItem(ViewGroup container, int position) {
View itemView;
if (mList.get(position).getType() == 0) {
//for simple item
itemView = mLayoutInflater.inflate(R.layout.pager_news, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
TextView text = (TextView) itemView.findViewById(R.id.text_id);
imageView.setImageResource(mResources[position].getUrl());
text.setText(mResources[position].getTitle());
container.addView(itemView);
} else {
//for adavertise item
itemView = mLayoutInflater.inflate(R.layout.pager_advertise, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
imageView.setImageResource(mResources[position]);
container.addView(itemView);
}
return itemView;
}发布于 2019-02-20 16:45:42
您可以只创建两种类型的片段,一种是您的主要片段,例如新闻片段,另一种是广告片段,用于显示广告。
根据您的逻辑,将这些片段添加到list中,然后再将其传递给pageradapter。
private ArrayList<Fragment> fragmentList = new ArrayList<>();
fragmentList.add(NewsFragment.newInstance());
fragmentList.add(NewsFragment.newInstance());
fragmentList.add(NewsFragment.newInstance());
fragmentList.add(NewsFragment.newInstance());
fragmentList.add(NewsFragment.newInstance());
fragmentList.add(AdFragment.newInstance());
NewsPagerAdapter newsPagerdapter = new NewsPagerAdapter(getSupportFragmentManager(), fragmentList);
viewPager.setAdapter(newsPagerdapter);你的适配器会是这样的-
public class NewsPagerAdapter extends FragmentStatePagerAdapter {
private ArrayList<Fragment> fragmentList = new ArrayList<>();
public NewsPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentList) {
super(fm);
this.fragmentList=fragmentList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}https://stackoverflow.com/questions/54780687
复制相似问题