===
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 添加权限 导包