实现频道管理

先添加依赖

         compile 'com.github.andyoom:draggrid:v1.0.1'
       在: allprojects {
                repositories {
                    jcenter()
                    maven {url "http://jitpack.io"}
                }
        }
ArrayList<ChannelBean>  cblist = new ArrayList<>();
         ChannelBean cb=new ChannelBean(name,isSelect);
                        cblist.add(cb);
  ChannelActivity.startChannelActivity(MainActivity.this,cblist);
例:今日头条的tabhost的条目添加,到频道页面
mainactivity{//主页方法

ArrayList<Fragment>fraglist = new ArrayList<>();
//与头条上边文字对应的Fragment对象
fraglist.add(new F1(Api.TOUTIAO));
fraglist.add(new F2(Api.SHEHUI));
fraglist.add(new F3(Api.GUOJI));
fraglist.add(new F4(Api.GUONEI));
fraglist.add(new F5(Api.YULE));
fraglist.add(new F6(Api.JUNSHI));
fraglist.add(new F7(Api.KEJI));
fraglist.add(new F8(Api.CAIJING));
fraglist.add(new F9(Api.SHISHANG));
ArrayList<TopBean> list = new ArrayList<>();//要显示在头条上边的小标题
String re=dao.select("pindao");
//查询数据库
if(re==null){//第一次使用的时候,判断数据库没有存储到数据
list.add(new TopBean("1","推荐",true));
list.add(new TopBean("2","社会",true));
list.add(new TopBean("3","国际",true));
list.add(new TopBean("4","国内",true));
list.add(new TopBean("5","娱乐",true));
list.add(new TopBean("6","军事",true));
list.add(new TopBean("7","科技",true));
list.add(new TopBean("8","财经",true));
list.add(new TopBean("9","时尚",true));
horizontal_tabhost.load(list, fraglist);}
else{
//返回时候,第二次调用展示数据库信息
list.clear();//清除之前的数据,显示最新的
ArrayList<Fragment> fl=new ArrayList<>();//新的Fragment集合,存放新数据对应的Fragment
try {
JSONArray arr=new JSONArray(re);//解析过程
for (int i = 0; i <arr.length() ; i++) { 
  JSONObject oo= (JSONObject) arr.get(i);
  String name=oo.getString("name"); 
  booleanbo=oo.getBoolean("isSelect");//判断返回的对象中,如果为true,代表保留
  if(bo){ TopBean to=newTopBean(i+"",name,bo);
 
  list.add(to);//添加到数据集合中 
  fl.add(fraglist.get(i));//与之对应的Fragment对象集合
  } }
  horizontal_tabhost.load(list, fl);//将数据传递给自定义控件 
 } catch (JSONException e) 
 e.printStackTrace();
 }}

}

private void pindaoUtils() {
cblist = new ArrayList<>();
String result=dao.select("pindao");//从数据库中查询数据
if(result==null){//第一次,数据库信息为空,添加头条里面的信息到频道中
for (int i = 0; i <list.size(); i++) {
TopBean tb=list.get(i);
ChannelBean cb=new ChannelBean(tb.name,tb.state);
cblist.add(cb);
}
}else{//否则,从数据库中解析数据,添加到频道中
try {
JSONArray arr=new JSONArray(result);
for (int i = 0; i <arr.length() ; i++) {
JSONObject oo= (JSONObject) arr.get(i);
String name=oo.getString("name");
boolean bo=oo.getBoolean("isSelect");
ChannelBean be=new ChannelBean(name,bo);
cblist.add(be);//将频道ChannelBean对象放进集合
}
} catch (JSONException e) {
e.printStackTrace();
}
}
ChannelActivity.startChannelActivity(MainActivity.this,cblist);//调用频道类的方法,将数据放进频道中处理
}
当在频道界面,返回的时候,实现头条里面的数据与频道里面选择的数据保持一致的操作,这时有个回调接口的方法,接收频道最后保留的信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==101){//判断返回的代码号
String result_json_key = data.getStringExtra("json");//获取传递过来的json串数据
//重新刷新 头tabhost
dao.remove("pindao");//清除数据库中之前保存的频道信息,更新为最新的,刚才所选择后的频道信息
dao.insert("pindao",result_json_key);//添加到数据库
list.clear();//清除之前的对象集合
ArrayList<Fragment> fflist=new ArrayList<>();
try {
JSONArray arr=new JSONArray(result_json_key);
for (int i = 0; i <arr.length() ; i++) {
JSONObject oo= (JSONObject) arr.get(i);
String name=oo.getString("name");
boolean bo=oo.getBoolean("isSelect");//判断如果是true(就是频道中选中的一些频道信息)
if(bo)
{
fflist.add(fraglist.get(i));//与选择的数据相对应的Fragment
TopBean top=new TopBean(name,bo);
list.add(top);//选择数据封装成对象放进集合 中,给自定义控件设置信息,更改头条条目的信息
}
}
horizontal_tabhost.clear();//清除之前自定义控件中的控件信息,避免发生重复,布局中removeAllView();的操作
horizontal_tabhost.load(list, fflist);//重新给自定义控件设置值
} catch (JSONException e) {
e.printStackTrace();
}
}
}



添加maven 开元代码里面的    url "http://jitpack.io"(在工程的build.gradle里面设置)

实现代码

最后,将数据放进人家的频道类里面

 
 
 


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值