下面我们来写一下频道管理的代码,频道管理其实挺简单的,第一步先实现:
1. 在app的gradle里面
com.github.andyoom:draggrid:v1.0.1
2.在项目的build.gradle中添加
maven {url "https://jitpack.io"}
接下来我们就要在MainActivity中实现频道管理的代码了: private List<Fragment> fragments;
private List<NewsBean> listbean;
private NewsBean bean;
private List<ChannelBean> channelActivityList;
private List<ChannelBean> channelist;
private MyDao dao;
private NewsBean newsBean;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dotImage= (ImageView) findViewById(R.id.dotImage);
initView();
initData();
}
/**
* 点击
*/
private void initView() {
dotImage.setOnClickListener(this);
}
/**
* 文字
*/
private void initData() {
dao=new MyDao(MainActivity.this);
fragments=new ArrayList<>();
listbean=new ArrayList<>();
newsBean = new NewsBean();
listbean.add(new NewsBean("1","推荐",true));
listbean.add(new NewsBean("2","娱乐",true));
listbean.add(new NewsBean("3","社会",true));
listbean.add(new NewsBean("4","体育",true));
listbean.add(new NewsBean("3","财经",true));
listbean.add(new NewsBean("6","科技",true));
listbean.add(new NewsBean("7","军事",true));
listbean.add(new NewsBean("8","医疗",true));
fragments.add(new MyFragment());
fragments.add(new FragmentYuLe());
fragments.add(new FragmentSheHui());
fragments.add(new FragmentTiYu());
fragments.add(new FragmentCaiji());
fragments.add(new FragmentKeJi());
fragments.add(new FragmentJunshi());
fragments.add(new FragmentYiLiao());
tabhost.display(listbean,fragments);
}
/**
* 点击事件
* @param view
*/
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.dotImage:
dotImage_pindao();
break;
}
}
/**
* 点击频道====>存到数据库
*/
private void dotImage_pindao() {
channelist=new ArrayList<>();
String result=dao.select("pindao");
System.out.println("====结果"+result);
if(result==null){
//第一次进入频道
for (int i = 0; i <listbean.size(); i++) {
NewsBean n=listbean.get(i);
ChannelBean channel=new ChannelBean(n.name,n.state);
channelist.add(channel);
}
}else{
//第二次进入
try {
JSONArray array=new JSONArray(result);
for (int i = 0; i <array.length(); i++) {
JSONObject object= (JSONObject) array.get(i);
String name=object.getString("name");
boolean state=object.getBoolean("isSelect");
ChannelBean beans=new ChannelBean(name,state);
channelist.add(beans);
}
} catch (Exception e) {
e.printStackTrace();
}
}
ChannelActivity.startChannelActivity(MainActivity.this, channelist);
}
//回调的方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断回传码是否相同
if(resultCode==101){
Log.i("xxx","回传!");
String reqult_key=data.getStringExtra("json");
dao.delect("pindao");//清楚数据
dao.add("pindao",reqult_key);//添加到数据
System.out.println("====保存"+reqult_key);
listbean.clear();
ArrayList<Fragment> list=new ArrayList<>();
try {
JSONArray arr=new JSONArray(reqult_key);
for (int i = 0; i < arr.length(); i++) {
JSONObject obj= (JSONObject) arr.get(i);
String name=obj.getString("name");
boolean state=obj.getBoolean("isSelect");
if(state){
list.add(fragments.get(i));
NewsBean newsBean=new NewsBean(name,state);//state是bean类中的一个类型:public boolean state;
listbean.add(newsBean);
}
}
tabhost.remove();
tabhost.display(listbean,list);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我们在写一个数据库将我们写的数据存入到数据库中我们的频道管理就差不多完成了。我们来创建数据库:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context) {
super(context, "pindao.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table news(type varchar,json text)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
再创建一个Dao包:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class MyDao {
private Context context;
private MySQLiteOpenHelper helper=null;
public MyDao(Context context){
super();
this.context=context;
helper=new MySQLiteOpenHelper(context);
}
/**
* 添加数据
* @param type
* @param json
*/
public void add(String type,String json){
SQLiteDatabase db=helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("type",type);
values.put("json",json);
db.insert("news",null,values);
db.close();
System.out.println("保存成功");
}
/**
* 查询数据
*/
public String select(String type){
SQLiteDatabase db=helper.getWritableDatabase();
Cursor cursor=db.query("news",null,"type=?",new String[]{type},null,null,null);
while (cursor.moveToNext()){
String json=cursor.getString(cursor.getColumnIndex("json"));
return json;
}
return null;
}
/**
* 删除数据
*/
public void delect(String type){
SQLiteDatabase db=helper.getWritableDatabase();
db.delete("news","type=?",new String[]{type});
String select=select(type);
if(select==null){
System.out.print("==删除查询为空!");
}else{
System.out.print("==删除后的查询未成功!");
}
}
}
这就好了,就可以实现频道管理并存到数据库中的频道管理!