先添加依赖
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里面设置)
实现代码
最后,将数据放进人家的频道类里面