android新闻管理,Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储...
Android資訊新聞類App(頭條、網易等),頻道管理集成之數據庫存儲
發布時間:2019-01-16 19:55,
瀏覽次數:305
, 標簽:
Android
App
*
經常看新聞類的大家都知道這個頻道管理。
圖片轉載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'
清單文件:
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
/>
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"); } }
總結
以上是生活随笔為你收集整理的android新闻管理,Android资讯新闻类App(头条、网易等),频道管理集成之数据库存储...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android studio 如何导入工
- 下一篇: 嵌入式android pdf,Embed