首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android垂直寻呼机适配器(在寻呼机适配器之间添加不同的页面)

Android垂直寻呼机适配器(在寻呼机适配器之间添加不同的页面)
EN

Stack Overflow用户
提问于 2019-02-20 15:09:13
回答 2查看 40关注 0票数 0

我要求在垂直寻呼机的页面之间显示广告。例如像inshorts这样的新闻应用程序。任何方法都可以做到这一点。

用于新闻页面的数据是标题、内容和日期,我在jsonarray中获取了多个新闻的数据。我的要求是在寻呼机适配器中添加一个不同的页面(广告页面)。例句:看了5遍新闻之后。我应该得到广告页面,它与新闻页面不同

EN

回答 2

Stack Overflow用户

发布于 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

代码语言:javascript
复制
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数组

代码语言:javascript
复制
{
  "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中,

代码语言:javascript
复制
@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;
}
票数 1
EN

Stack Overflow用户

发布于 2019-02-20 16:45:42

您可以只创建两种类型的片段,一种是您的主要片段,例如新闻片段,另一种是广告片段,用于显示广告。

根据您的逻辑,将这些片段添加到list中,然后再将其传递给pageradapter。

代码语言:javascript
复制
    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);

你的适配器会是这样的-

代码语言:javascript
复制
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();
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54780687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档