頻道管理+小圓點+ViewPager+數據緩存

===



1 電腦聯網
2 模擬器聯網
3 添加權限 導包


===============================================MainActivity=========================================================

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.widget.RadioGroup;

import java.util.ArrayList;
import java.util.List;

import test.lilin.com.lilin0823.Fragment.FragMine;
import test.lilin.com.lilin0823.Fragment.FragNew;

public class MainActivity extends FragmentActivity {
    ViewPager vp;
    RadioGroup rg;
    List<Fragment> lists=new ArrayList<Fragment>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp= (ViewPager) findViewById(R.id.vp);
        rg= (RadioGroup) findViewById(R.id.rg);
        initvp();
        MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager());
        vp.setAdapter(adapter);
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                   switch (position){
                       case 0:
                           rg.check(R.id.rb1);
                           break;
                       case 1:
                           rg.check(R.id.rb2);
                           break;
                       default:
                           break;
                   }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.rb1:
                        vp.setCurrentItem(0);
                        break;
                    case R.id.rb2:
                        vp.setCurrentItem(1);
                        break;
                    default:
                        break;
                }
            }
        });
    }
     private  class MyPagerAdapter extends FragmentPagerAdapter{

         public MyPagerAdapter(FragmentManager fm) {
             super(fm);
         }

         @Override
         public Fragment getItem(int position) {
             return lists.get(position);
         }

         @Override
         public int getCount() {
             return lists.size();
         }

     }
    private void initvp() {
        lists.add(new FragNew());
        lists.add(new FragMine());
    }
}
                                             Fragment

=================================FragNew==================================
import android.content.ContentValues;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import test.lilin.com.lilin0823.Bean.BannerBean;
import test.lilin.com.lilin0823.Bean.NEWS;
import test.lilin.com.lilin0823.Bean.img;
import test.lilin.com.lilin0823.DB.Dao;
import test.lilin.com.lilin0823.R;
import test.lilin.com.lilin0823.net.NetUtils;
import test.lilin.com.lilin0823.vp.ViewPagerIndicator;


public class FragNew extends Fragment {
    View view;
    ViewPager vp1;
    ListView lv;
    Dao dao;
    img ig;
    NEWS news;
    LinearLayout ll;
    MyBaseAdapter mybaseadapter;
    MyAdapter adapter;
    List<ImageView> list=new ArrayList<ImageView>();
    Handler handler=new Handler();
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view=View.inflate(getActivity(), R.layout.fragnew,null);

        dao=new Dao(getActivity());
        initView();
        initData();
        return view;
    }
     private  void  initData(){
         getDataByDB();
         getDataByNet();
    }
     private void getDataByDB(){
         new AsyncTask<String,String,String>(){

             @Override
             protected String doInBackground(String... strings) {
                 List<BannerBean> list=dao.queryAll();
                 Log.i("=======================",list.toString());
                 List<BannerBean> blist=new ArrayList<BannerBean>();
                 ig = new img();
                 for (int i=0;i<list.size();i++){
                     blist.add(list.get(i));
                     ig.setBanner(blist);
                 }
                 return ig.toString();
             }

             @Override
             protected void onPostExecute(String s) {

                initVP1();
                 super.onPostExecute(s);
             }
         }.execute();
     }
    private void getDataByNet(){
        new AsyncTask<String,String,String>(){

            @Override
            protected String doInBackground(String... strings) {
                Reader reader1= NetUtils.getNet("http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=banner");
                Reader reader2=NetUtils.getNet("http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=one");
                Gson gson=new Gson();
                ig=gson.fromJson(reader1, test.lilin.com.lilin0823.Bean.img.class);
                setDataToDB();
                news=gson.fromJson(reader2,NEWS.class);
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                initVP1();
                mybaseadapter.notifyDataSetChanged();
                vp1.setOnPageChangeListener(new ViewPagerIndicator(getActivity(),vp1,ll,ig.getBanner().size()));
                super.onPostExecute(s);
            }
        }.execute();
    }
    private void setDataToDB(){
        for (int i=0;i<ig.getBanner().size();i++){
            String img=ig.getBanner().get(i).getImageUrl();
            ContentValues values=new ContentValues();
            values.put("img",img);
            dao.insert(values);
        }
    }
    private  void initView(){
        vp1=view.findViewById(R.id.vp1);
        lv=view.findViewById(R.id.lv);
        ll=view.findViewById(R.id.ll);
        initLV();

    }

    private void initLV() {
        mybaseadapter=new MyBaseAdapter();
        lv.setAdapter(mybaseadapter);
    }


    private void initVP1(){
     if(ig!=null){
         for(int i=0;i<ig.getBanner().size();i++){
             ImageView iv=new ImageView(getActivity());
             ImageLoader.getInstance().displayImage(ig.getBanner().get(i).getImageUrl(),iv);
             list.add(iv);
         }
     }
        adapter=new MyAdapter();
        vp1.setAdapter(adapter);
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                int index=vp1.getCurrentItem();
                index++;
                vp1.setCurrentItem(index);
                handler.postDelayed(this,1000);
            }
        }, 1000);
    }
    private class MyAdapter extends PagerAdapter {


        @Override
        public int getCount() {
           // return img.getBanner().size();
            return  Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            position%=ig.getBanner().size();
            container.addView(list.get(position));
            return list.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
    }
    }
   private class  MyBaseAdapter extends BaseAdapter{

       @Override
       public int getCount() {
           if(news!=null) {
               return news.getData().size();
           }
           return  0;
       }

       @Override
       public Object getItem(int i) {
           return null;
       }

       @Override
       public long getItemId(int i) {
           return 0;
       }

       @Override
       public View getView(int i, View view, ViewGroup viewGroup) {
           ViewHolder holder;
           if(view==null){
               view=View.inflate(getActivity(),R.layout.item,null);
               holder=new ViewHolder();
               holder.tv_title=view.findViewById(R.id.tv_title);
               holder.tv_content=view.findViewById(R.id.tv_content);
               holder.iv_iv=view.findViewById(R.id.iv_iv);
               view.setTag(holder);
           }else {
               holder= (ViewHolder) view.getTag();
           }
           holder.tv_title.setText(news.getData().get(i).getTitle());
           holder.tv_content.setText(news.getData().get(i).getContent());
           ImageLoader.getInstance().displayImage(news.getData().get(i).getImageUrl(),holder.iv_iv);
           return view;
       }
   }
    class ViewHolder{
        TextView tv_title,tv_content;
        ImageView iv_iv;
    }

}

================================FragMine=========================================
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;

import com.google.gson.Gson;

import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import test.lilin.com.lilin0823.Bean.PD;
import test.lilin.com.lilin0823.R;
import test.lilin.com.lilin0823.net.NetUtils;
public class FragMine extends Fragment {
    View view;
    GridView gv_wd,gv_gd;
    PD pd;
    MyAdapterMe myAdapterMe;
    MyAdapterMore myAdapterMore;
    List<String> list_wd=new ArrayList<String>();
    List<String> list_gd=new ArrayList<String>();
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view=View.inflate(getActivity(), R.layout.fragmine,null);
        initView();
        initData();
        return view;
    }
    private void initView() {
        gv_wd= view.findViewById(R.id.gv_wd);
        gv_gd= view.findViewById(R.id.gv_gd);
        initMe();
        initMore();

    }
    private void initData() {
          getDataByNet();

    }
    private void  getDataByNet(){
        new AsyncTask<String,String,String>(){

            @Override
            protected String doInBackground(String... strings) {
                Reader reader= NetUtils.getNet("http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=channel");
                Gson gson=new Gson();
                pd=gson.fromJson(reader,PD.class);
                for(int i=0;i<pd.getChannel().size();i++){
                    list_wd.add(pd.getChannel().get(i).getChannelMe());
                    list_gd.add(pd.getChannel().get(i).getChannelMore());
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                gv_wd.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        list_gd.add(list_wd.get(i));
                        list_wd.remove(i);
                        myAdapterMe.notifyDataSetChanged();
                    }
                });
                gv_gd.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                        list_wd.add(list_gd.get(i));
                        myAdapterMe.notifyDataSetChanged();
                        list_gd.remove(i);
                        myAdapterMore.notifyDataSetChanged();
                    }
                });
                myAdapterMe.notifyDataSetChanged();
                myAdapterMore.notifyDataSetChanged();

                super.onPostExecute(s);
            }
        }.execute();
    }
   private void initMe(){
       myAdapterMe=new MyAdapterMe();
       gv_wd.setAdapter(myAdapterMe);
    }
    private void initMore(){
     myAdapterMore=new MyAdapterMore();
        gv_gd.setAdapter(myAdapterMore);
    }
    private class MyAdapterMe extends BaseAdapter{

        @Override
        public int getCount() {
            if(list_wd!=null){
              return list_wd.size();
            }
            return 0;
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view=View.inflate(getActivity(),R.layout.gv_item,null);
            TextView tv_gv=view.findViewById(R.id.tv_gv);
            tv_gv.setText(list_wd.get(i));
            return view;
        }
    }
    private class MyAdapterMore extends BaseAdapter{

        @Override
        public int getCount() {
            if(list_gd!=null){
                return list_gd.size();
            }
            return 0;
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            view=View.inflate(getActivity(),R.layout.gv_item,null);
            TextView tv_gv=view.findViewById(R.id.tv_gv);
            tv_gv.setText(list_gd.get(i));
            return view;
        }
    }
}
                                                                  MyApp    
==========================================================================
package test.lilin.com.lilin0823;

import android.app.Application;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

import java.io.File;

/**

 */
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        File file = this.getCacheDir();

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .build();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                this)
                // max width, max height,即保存的每個緩存文件的最大長寬
                .memoryCacheExtraOptions(480, 800)
                // 線程池內加載的數量
                .threadPoolSize(3)
                // 線程優先級
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .defaultDisplayImageOptions(options)
                // You can pass your own memory cache implementation你可以通過自己的內存緩存實現
                // .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
                // .memoryCacheSize(2 * 1024 * 1024)
                //硬盤緩存50MB
                .diskCacheSize(50 * 1024 * 1024)
                //將保存的時候的URI名稱用MD5
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                // 加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())//將保存的時候的URI名稱用HASHCODE加密
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .diskCacheFileCount(100) //緩存的File數量
                .diskCache(new UnlimitedDiscCache(file))// 自定義緩存路徑
                // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
                // .imageDownloader(new BaseImageDownloader(context, 5 * 1000,
                // 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超時時間
                .writeDebugLogs() // Remove for release app
                .build();

        ImageLoader.getInstance().init(config);
    }
}                                                                
                                                                                            NetUtils
=============================================================================
package test.lilin.com.lilin0823.net;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;


public class NetUtils {
    public NetUtils() {
        super();
    }

    public static Reader getNet(String path){
        Reader reader=null;
        try {
            URL url=new URL(path);
            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            int code=conn.getResponseCode();
            if(code==200){
                InputStream is=conn.getInputStream();
                reader=new InputStreamReader(is);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return  reader;
    }
}

                                                 DB
=================================================MyOpenHelper====================================

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by せしおゆ on 2017/8/24.
 */
public class MyOpenHelper extends SQLiteOpenHelper {
    public MyOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }
    public MyOpenHelper(Context context) {
        super(context, "news.db", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql="create table news(id integer primary key autoincrement, img varchar)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

=======================================Dao=======================
package test.lilin.com.lilin0823.DB;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

import test.lilin.com.lilin0823.Bean.BannerBean;

/**
 * Created by せしおゆ on 2017/8/24.
 */
public class Dao   {
    MyOpenHelper helper;

    public Dao(Context context) {
        helper=new MyOpenHelper(context);
    }
    public void insert(ContentValues values){
        SQLiteDatabase db=helper.getWritableDatabase();
        db.insert("news",null,values);
        db.close();
    }
    public List<BannerBean> queryAll(){
        List<BannerBean> list=new ArrayList<BannerBean>();
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor=db.query("news",null,null,null,null,null,null);
        while(cursor.moveToNext()){
            String img=cursor.getString(cursor.getColumnIndex("img"));
            BannerBean bean=new BannerBean(img);
            list.add(bean);
        }
        db.close();
        return  list;
    }
}




1 電腦聯網
2 模擬器聯網
3 添加權限 導包
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章