频道管理的实际应用

在程序中加入

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>
 
第一次做,难免会有些差错,大家请多多包涵,如发现不足之处,敬请指出,鄙人会尽快修改,谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值