在程序中加入
maven { url "https://jitpack.io"}
再app应有中加入
compile 'com.github.andyoom:draggrid:v1.0.1'
在主页面添加的内容(主UI)
ArrayList<String> list =newArrayList<>();
list.add("周一");
list.add("周二");
list.add("周三");
list.add("周四");
list.add("周五");
list.add("周六");
list.add("周七");
list.add("今天");
添加8个Fragment页面和上面对应(主UI)
ArrayList<Fragment>list1 = new ArrayList<>();for (int i = 0; i < 8; i++) { Fragment1 fragment1 = new Fragment1(); list1.add(fragment1)
viewPager创建和适配器(主页面)
//tab和viewpager结合
tab.setupWithViewPager(vip);
vip = (ViewPager) findViewById(R.id.main_vip);vip.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return list1.get(position); } //当页面切换时,保存当前页面, @Override public void destroyItem(ViewGroup container, int position, Object object) { } @Override public int getCount() { return list1.size(); } @Override public CharSequence getPageTitle(int position) { return list.get(position); } });
//频道管理的方法,直接在主ui进行调用
private void initData() {alllist = new ArrayList<>(); userlist = new ArrayList<>(); dbUtils = new DBUtils(this); List<ChannelBean> allChannels = dbUtils.getAllChannels(); if (allChannels == null || allChannels.size() < 1) { ChannelBean channelBean; for (int i = 0; i < 7; i++) { if (i < 5) { channelBean = new ChannelBean(list.get(i), true); userlist.add(channelBean); } else { channelBean = new ChannelBean(list.get(i), false); } alllist.add(channelBean); } dbUtils.saveChnnels(alllist); } else { //如果有数据的话 把查询出来的数据赋值到这两个集合中 alllist.addAll(allChannels); //查询我的频道数据 List<ChannelBean> userChannels = dbUtils.getUserChannels(); userlist.addAll(userChannels); } //传入我们自定义的pagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), userlist); vip.setAdapter(adapter); //gengduo是一个图片监听器 gengduo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ChannelActivity.startChannelActivity(MainActivity.this, alllist); } }); }
//监听,当返回json串时(一定要写,否则不会监听)(主ui)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == ChannelActivity.REQUEST_CODE && resultCode == ChannelActivity.RESULT_CODE) { String stringExtra = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY); if (TextUtils.isEmpty(stringExtra)) { return; } List<ChannelBean> list = new Gson().fromJson(stringExtra, new TypeToken<List<ChannelBean>>() { }.getType()); if (list == null || list.size() < 1) { return; } //ArrayList<ChannelBean> alllist; //ArrayList<ChannelBean> userlist; alllist.clear(); userlist.clear(); //将返回的数据,添加到我们的集合中 alllist.addAll(list); for (ChannelBean channelBean : list) { boolean select = channelBean.isSelect(); if (select) { userlist.add(channelBean); } } adapter.notifyDataSetChanged(); //保存数据库 dbUtils.clearChannels(); dbUtils.saveChnnels(alllist); } }
//DBUtils数据库类
public class DBUtils { private final MyOpenHelpersqlite helpersqlite; private final SQLiteDatabase db; //有参 public DBUtils(Context context) { helpersqlite = new MyOpenHelpersqlite(context); db = helpersqlite.getWritableDatabase(); } public void saveChnnels(List<ChannelBean> channelBeanList) { if (channelBeanList == null || channelBeanList.size() < 0) { return; } for (ChannelBean channelBean : channelBeanList) { ContentValues values = new ContentValues(); values.put("name", channelBean.getName()); values.put("selected", channelBean.isSelect()); db.insert("channels", null, values); } } public List<ChannelBean> getAllChannels() { Cursor cursor = db.query("channels", null, null, null, null, null, null); List<ChannelBean> channelBeen = new ArrayList<>(); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int selected = cursor.getInt(cursor.getColumnIndex("selected")); channelBeen.add(new ChannelBean(name, selected == 0 ? false : true)); } cursor.close(); return channelBeen; } public List<ChannelBean> getUserChannels() { Cursor cursor = db.query("channels", null, "selected=?", new String[]{"1"}, null, null, null); List<ChannelBean> channelBeanList = new ArrayList<>(); while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int selected = cursor.getInt(cursor.getColumnIndex("selected")); channelBeanList.add(new ChannelBean(name, selected == 0 ? false : true)); } cursor.close(); return channelBeanList; } public void clearChannels() { db.delete("channels", null, null); } }
//Fragment的适配器(新类)
public class MyPagerAdapter extends FragmentPagerAdapter { private List<ChannelBean> mchannelBeanList; private final ArrayList<Fragment> list1; public MyPagerAdapter(FragmentManager fm, List<ChannelBean> channelBeanList) { super(fm); this.mchannelBeanList = channelBeanList; list1 = new ArrayList<>(); for (int i = 0; i < 8; i++) { Fragment1 fragment1 = new Fragment1(); list1.add(fragment1); } } @Override public Fragment getItem(int position) { //点击返回的页面 switch (mchannelBeanList.get(position).getName()) { case "周一": return list1.get(0); case "周二": return list1.get(1); case "周三": return list1.get(2); case "周四": return list1.get(3); case "周五": return list1.get(4); case "周六": return list1.get(5); case "周七": return list1.get(6); case "今天": return list1.get(7); } return null; } @Override public int getCount() { return mchannelBeanList == null ? 0 : mchannelBeanList.size(); } @Override public CharSequence getPageTitle(int position) { return mchannelBeanList.get(position).getName(); } @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); } public void refresh(ArrayList<ChannelBean> userlist) { if (userlist == null) { return; } if (mchannelBeanList != null) { mchannelBeanList.clear(); } mchannelBeanList = userlist; notifyDataSetChanged(); } }
//创建数据库
public class MyOpenHelpersqlite extends SQLiteOpenHelper { public MyOpenHelpersqlite(Context context) { super(context, "news.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table channels(name varchar(20),selected Integer)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
//主页面的layout
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <android.support.design.widget.TabLayout android:id="@+id/main_tab" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> </android.support.design.widget.TabLayout> <TextView android:id="@+id/gengduo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="gengduo" /> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/main_vip" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager>
第一次做,难免会有些差错,大家请多多包涵,如发现不足之处,敬请指出,鄙人会尽快修改,谢谢大家