Android新闻类app的数据库,Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储,androidapp...

本文介绍了一种在Android资讯新闻类App中实现频道管理集成的方法,通过数据库存储用户选择的新闻频道。首先,从Github导入依赖库,然后在Activity中查询数据库,如果有已选中的标签则加载,否则初始化数据并保存到数据库。同时,提供了一个按钮用于更新数据,并在接收返回数据后更新标签。在Sql_Dao层中,实现了数据的添加、查询和删除操作。
摘要由CSDN通过智能技术生成

Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储,androidapp

经常看新闻类的大家都知道这个频道管理。

图片转载https://blog.csdn.net/u011916937/article/details/50483278

我这里是用的Github,开源项目,导入的依赖,下属必须配置。allprojects {

repositories {

google()

jcenter()

//工程下的build.gradle

maven {

url "https://jitpack.io"

}

}

}

app下的build.gradle

implementation 'com.github.andyoom:draggrid:v1.0.1'

清单文件:

Activity内写法:

/此activity用数据库存储数据

public class Main2Activity extends AppCompatActivity {

private List tabs = new ArrayList<>();

private TabLayout tab;

private ViewPager vp;

private DBDao dbDao;

private List list;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tab = findViewById(R.id.tab);

vp = findViewById(R.id.vp);

dbDao = new DBDao(this);

//先查询数据库有没有数据,有数据取出选中的标签

list = dbDao.queryData();

if (list.size() != 0) {

for (int i = 0; i < list.size(); i++) {

ChannelBean channelBean = list.get(i);

boolean select = channelBean.isSelect();

String name = channelBean.getName();

if (select) {

//为true添加给标签

tabs.add(name);

}

}

} else {

//第一次运行程序 初始化数据并插入数据库

for (int i = 0; i < 10; i++) {

ChannelBean bean = new ChannelBean("item-" + i, i < 5 ? true : false);

dbDao.addData(bean);

}

//查询出数据

list = dbDao.queryData();

//遍历数据找出状态为true的能标签

for (int i = 0; i < list.size(); i++) {

ChannelBean channelBean = list.get(i);

boolean select = channelBean.isSelect();

String name = channelBean.getName();

if (select) {

//为true添加给标签

tabs.add(name);

}

}

}

tab.setTabMode(TabLayout.MODE_SCROLLABLE);

//创建适配器

MainViewPagerAdapter adapter = new MainViewPagerAdapter(getSupportFragmentManager(), tabs);

vp.setAdapter(adapter);

tab.setupWithViewPager(vp);

//频道管理

Button bt_go = findViewById(R.id.bt_go);

bt_go.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//每次点击更新最新数据

list = dbDao.queryData();

ChannelActivity.startChannelActivity(Main2Activity.this, list);

}

});

}

//回传数据

@Override

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

super.onActivityResult(requestCode, resultCode, data);

//清空数据

tabs.clear();

dbDao.delete();

Log.i("xxx", data.getStringExtra("json"));

//返回json数据

String json = data.getStringExtra("json");

try {

JSONArray jsonArray = new JSONArray(json);

for (int i = 0; i < jsonArray.length(); i++) {

ChannelBean channelBean = null;

JSONObject jsonObject = jsonArray.getJSONObject(i);

String isSelect = jsonObject.getString("isSelect");

String name = null;

if (isSelect.equals("true")) {

//为true添加给标签

name = jsonObject.getString("name");

tabs.add(name);

channelBean = new ChannelBean(name, true);

} else {

name = jsonObject.getString("name");

channelBean = new ChannelBean(name, false);

}

//从新把数据添加给数据库

dbDao.addData(channelBean);

}

//把标签给tablayout

for (int i = 0; i < tabs.size(); i++) {

tab.addTab(tab.newTab().setText( tabs.get(i)));

}

//创建适配器

MainViewPagerAdapter adapter = new MainViewPagerAdapter(getSupportFragmentManager(), tabs);

vp.setAdapter(adapter);

} catch (JSONException e) {

e.printStackTrace();

}

}

}

Sql_Dao层写法:

public class DBDao {

private final DBHelper helper;

public DBDao(Context context) {

helper = new DBHelper(context);

}

//添加

public void addData(ChannelBean channelBean) {

SQLiteDatabase db = helper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", channelBean.getName());

//可以储存boolean类型

values.put("isSelect", channelBean.isSelect());

db.insert("cache", null, values);

db.close();

}

//查询

public List queryData() {

SQLiteDatabase db = helper.getWritableDatabase();

List list = new ArrayList<>();

Cursor cursor = db.query("cache", null, null, null, null, null, null);

while (cursor.moveToNext()) {

ChannelBean channelBean = null;

String name = cursor.getString(cursor.getColumnIndex("name"));

//根据解析获取字段

int anInt = cursor.getInt(2);

//0代表是false

if (anInt == 0) {

channelBean = new ChannelBean(name, false);

//1代表true

} else {

channelBean = new ChannelBean(name, true);

}

list.add(channelBean);

}

return list;

}

//删除

public void delete() {

SQLiteDatabase db = helper.getWritableDatabase();

db.execSQL("delete from cache");

}

}

http://www.dengb.com/yjs/1334751.htmlwww.dengb.comtruehttp://www.dengb.com/yjs/1334751.htmlTechArticleAndroid资讯新闻类App(头条、网易等),频道管理集成之数据库存储,androidapp 经常看新闻类的大家都知道这个频道管理。 图片转载https://blog...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值