BEAN
MyBase
public class MyBase extends BaseAdapter{ private Context context; private List<UsersBean.DataBean.ArticleListBean>list; private String s; private final int ONE_TIME = 0; public MyBase(Context context, List<UsersBean.DataBean.ArticleListBean> list) { this.context = context; this.list = list; } @Override public int getViewTypeCount() { return 1; } @Override public int getItemViewType(int position) { List<String>list_pics=list.get(position).getList_pics(); for (int i=0;i<list_pics.size();i++){ s=list_pics.get(i); } if(s!=null){ return ONE_TIME; } else{ return ONE_TIME; } } @Override public int getCount() { return list.size(); } @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) { int type = getItemViewType(i); if (type == ONE_TIME){ ViewHolder holder; if (view == null){ view = View.inflate(context, R.layout.mybase,null); holder = new ViewHolder(); holder.textView = view.findViewById(R.id.textView); holder.imageView = view.findViewById(R.id.imageView); view.setTag(holder); }else{ holder = (ViewHolder) view.getTag(); } holder.textView.setText(list.get(i).getList_title()); ImageLoader.getInstance().displayImage(s,holder.imageView, HttpApplications.getOptions()); return view; }else{ return null; } } class ViewHolder{ TextView textView; ImageView imageView; } }
Fragment1
public class Fragment1 extends Fragment{ private List<UsersBean.DataBean.ArticleListBean> olist = new ArrayList<>(); private XListView xListView; private MyBase myBase; private HttpUtils httpUtils1; private String path = "http://www.wanandroid.com/tools/mockapi/6523/article_channel_list"; private int page = 1; public static Fragment getinstance(String title){ Fragment1 fragment1 = new Fragment1(); Bundle bundle = new Bundle(); bundle.putString("title",title); fragment1.setArguments(bundle); return fragment1; } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1,container,false); xListView = view.findViewById(R.id.xlistview); olist = new ArrayList<>(); Bundle arguments = getArguments(); String title = arguments.getString("title"); getData1(); return view; } public void getData1() { xListView.setPullRefreshEnable(true); xListView.setPullLoadEnable(true); xListView.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { page = 1; getViews(); } @Override public void onLoadMore() { page += 1; getViews(); } }); myBase = new MyBase(getActivity(),olist); xListView.setAdapter(myBase); } public void getViews() { httpUtils1 = HttpUtils.getInstance(); httpUtils1.getdata(path); httpUtils1.getHttpListener(new HttpUtils.HttpListener() { @Override public void getdata(String json) { Gson gson = new Gson(); UsersBean usersBean = gson.fromJson(json, UsersBean.class); List<UsersBean.DataBean.ArticleListBean> article_list = usersBean.getData().getArticle_list(); if (page == 1){ olist.clear(); } olist.addAll(article_list); myBase.notifyDataSetChanged(); if (page == 1){ xListView.stopRefresh(); }else{ xListView.stopLoadMore(); } } }); } }
Fragment01
public class Fragment01 extends Fragment { private HorizontalScrollView hs; private ViewPager viewPager; List<TextView>list; private ArrayList<ChannelBean> channelBeens; private LinearLayout linearLayout; private Button button; private View view; private XBanner xBanner; private HttpUtils httpUtils; private String path = "http://www.wanandroid.com/tools/mockapi/6523/article_channel_list"; private ArrayList<String> xlist; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment01,container,false); initView(); initData(); getinit(); return view; } private void initData(){ list=new ArrayList<>(); channelBeens=new ArrayList<>(); channelBeens.add(new ChannelBean("头条",true)); channelBeens.add(new ChannelBean("读报",true)); channelBeens.add(new ChannelBean("视频",true)); channelBeens.add(new ChannelBean("观点",true)); channelBeens.add(new ChannelBean("时间",true)); channelBeens.add(new ChannelBean("政情",false)); channelBeens.add(new ChannelBean("经济",false)); channelBeens.add(new ChannelBean("人文",false)); channelBeens.add(new ChannelBean("生态",false)); channelBeens.add(new ChannelBean("社会",false)); for(int i=0;i<channelBeens.size();i++){ TextView textView = new TextView(getActivity()); textView.setText(channelBeens.get(i).getName()+""); textView.setTextSize(20); textView.setId(i+1000); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int id=view.getId(); viewPager.setCurrentItem(id-1000); } }); if(i==0){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLACK); } LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(20,10,20,10); linearLayout.addView(textView,layoutParams); list.add(textView); } viewPager.setAdapter(new Myadapter(getActivity().getSupportFragmentManager())); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for (int i = 0; i < list.size(); i++) { if(position==i){ list.get(i).setTextColor(Color.RED); }else{ list.get(i).setTextColor(Color.BLACK); } } TextView textView = list.get(position); int width = textView.getWidth()+10; hs.scrollTo(width*position,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeens); } }); } private void initView() { hs = (HorizontalScrollView) view.findViewById(R.id.hs); linearLayout = (LinearLayout)view. findViewById(R.id.linear); viewPager = (ViewPager) view.findViewById(R.id.pagerr); button = (Button) view.findViewById(R.id.button); xBanner =(XBanner) view.findViewById(R.id.xbanner); } class Myadapter extends FragmentPagerAdapter { public Myadapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Log.i("TAG",position+""); return Fragment1.getinstance(list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } } public void getinit(){ httpUtils = HttpUtils.getInstance(); httpUtils.getdata(path); xlist = new ArrayList<>(); httpUtils.getHttpListener(new HttpUtils.HttpListener() { @Override public void getdata(String json) { Gson gson = new Gson(); UsersBean usersBean = gson.fromJson(json, UsersBean.class); List<UsersBean.DataBean.FocusListBean> focus_list = usersBean.getData().getFocus_list(); for (int i=0;i<focus_list.size();i++){ String image_url = focus_list.get(i).getImage_url(); xlist.add(image_url); } xBanner.setData(xlist,null); xBanner.setmAdapter(new XBanner.XBannerAdapter() { @Override public void loadBanner(XBanner banner, View view, int position) { Glide.with(getActivity()).load(xlist.get(position)).into((ImageView)view); } }); } }); } }
HTTP
HttpApplications
public class HttpApplications extends Application { private Context context; @Override public void onCreate() { super.onCreate(); context=this; initImageLouder(); } private void initImageLouder() { File cacheDir = StorageUtils.getCacheDirectory(context); //缂撳瓨鏂囦欢澶硅矾寰? ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 鍐呭瓨缂撳瓨鏂囦欢鐨勬渶澶ч暱瀹? .diskCacheExtraOptions(480, 800, null) // 鏈湴缂撳瓨鐨勮缁嗕俊鎭?缂撳瓨鐨勬渶澶ч暱瀹?锛屾渶濂戒笉瑕佽缃繖涓? .threadPriority(Thread.NORM_PRIORITY - 2) // default 璁剧疆褰撳墠绾跨▼鐨勪紭鍏堢骇 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //鍙互閫氳繃鑷繁鐨勫唴瀛樼紦瀛樺疄鐜? .memoryCacheSize(2 * 1024 * 1024) // 鍐呭瓨缂撳瓨鐨勬渶澶у€? .memoryCacheSizePercentage(13) // default .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd鍗?鏈湴)缂撳瓨鐨勬渶澶у€? .diskCacheFileCount(100) // 鍙互缂撳瓨鐨勬枃浠舵暟閲? // default涓轰娇鐢℉ASHCODE瀵筓IL杩涜鍔犲瘑鍛藉悕锛?杩樺彲浠ョ敤MD5(new Md5FileNameGenerator())鍔犲瘑 .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .writeDebugLogs() // 鎵撳嵃debug log .build(); //寮€濮嬫瀯寤? ImageLoader.getInstance().init(config); } public static DisplayImageOptions getOptions(){ DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 璁剧疆鍥剧墖涓嬭浇鏈熼棿鏄剧ず鐨勫浘鐗? .showImageForEmptyUri(R.mipmap.ic_launcher) // 璁剧疆鍥剧墖Uri涓虹┖鎴栨槸閿欒鐨勬椂鍊欐樉绀虹殑鍥剧墖 .showImageOnFail(R.mipmap.ic_launcher) // 璁剧疆鍥剧墖鍔犺浇鎴栬В鐮佽繃绋嬩腑鍙戠敓閿欒鏄剧ず鐨勫浘鐗? .resetViewBeforeLoading(false) // default 璁剧疆鍥剧墖鍦ㄥ姞杞藉墠鏄惁閲嶇疆銆佸浣? .delayBeforeLoading(1000) // 涓嬭浇鍓嶇殑寤惰繜鏃堕棿 .cacheInMemory(true) // default 璁剧疆涓嬭浇鐨勫浘鐗囨槸鍚︾紦瀛樺湪鍐呭瓨涓? .cacheOnDisk(true) // default 璁剧疆涓嬭浇鐨勫浘鐗囨槸鍚︾紦瀛樺湪SD鍗′腑 .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 璁剧疆鍥剧墖浠ュ浣曠殑缂栫爜鏂瑰紡鏄剧ず .bitmapConfig(Bitmap.Config.ARGB_8888) // default 璁剧疆鍥剧墖鐨勮В鐮佺被鍨? //.displayer(new RoundedBitmapDisplayer(300)) // default 杩樺彲浠ヨ缃渾瑙掑浘鐗噉ew RoundedBitmapDisplayer(20) .handler(new Handler()) // default .build(); return options; } }
HttpUtils
public class HttpUtils { private static HttpUtils httpUtils; private HttpListener httpListener; public static HttpUtils getInstance(){ if(httpUtils==null){ httpUtils = new HttpUtils(); } return httpUtils; } public void getdata(String url){ MyAsyncTask myAsyncTask = new MyAsyncTask(); myAsyncTask.execute(url); } class MyAsyncTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { String json=""; try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); if(connection.getResponseCode()==200){ InputStream inputStream = connection.getInputStream(); json=StreamToString(inputStream); } } catch (Exception e) { e.printStackTrace(); } return json; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); httpListener.getdata(s); } } private String StreamToString(InputStream inputStream) { InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader reader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); try { while ((s = reader.readLine())!=null){ builder.append(s); } reader.close(); }catch (Exception e){ e.printStackTrace(); } return builder.toString(); } public interface HttpListener{ void getdata(String json); } public void getHttpListener(HttpListener httpListener){ this.httpListener = httpListener; } }