联动+加载+Fragment
来源:互联网 发布:网上宿迁网络问政来龙 编辑:程序博客网 时间:2024/05/18 20:50
布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" tools:context="com.example.zhoukao.MainActivity"> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="50dp" app:tabGravity="center" app:tabIndicatorColor="#ff0000" app:tabMode="scrollable" app:tabSelectedTextColor="#ff0000" app:tabTextColor="#00ff00"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager></LinearLayout>
listview
PullToRefreshListView
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"> </com.handmark.pulltorefresh.library.PullToRefreshListView></LinearLayout>
Appapction
public class Appapcliction extends BaseApplication{ @Override public void onCreate() { super.onCreate(); //获取sd卡根目录路径 File files = new File("/sdcard/Rimg"); initImageLoader(getApplicationContext(),files); }}
BaseApplication
package com.example.zhoukao;import android.app.Application;import android.content.Context;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;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 BaseApplication extends Application { public static void initImageLoader(Context context, File file) { ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); config.threadPriority(Thread.NORM_PRIORITY - 2);//线程池内加载的数量 config.denyCacheImageMultipleSizesInMemory(); config.diskCacheFileNameGenerator(new Md5FileNameGenerator()); config.diskCacheSize(50 * 1024 * 1024); // 50 MiB config.tasksProcessingOrder(QueueProcessingType.LIFO); // config.diskCache(true); config.writeDebugLogs(); // Remove for release app config .diskCache(new UnlimitedDiskCache(file));//UnlimitedDiskCache 限制这个图片的缓存路径 config .diskCacheFileCount(50);//配置sdcard缓存文件的数量 // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config.build()); }}
Mainactivity
package com.example.zhoukao;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private TabLayout tabLayout; private ViewPager viewPager; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setContentView(R.layout.activity_main); tabLayout = (TabLayout) findViewById(R.id.tab_layout); viewPager = (ViewPager) findViewById(R.id.view_pager); list = new ArrayList<>(); list.add("福利"); list.add("Android"); list.add("iOS"); list.add("休息视频"); list.add("拓展资源"); list.add("前端"); list.add("all"); //Viewpager要展示页面...设置适配器 //初始化fragment页面适配器 =》new FragmentPagerAdapter //获取fragment 管理器=》getSupportFragmentManager //getpagetitle 获取当前页面显示的标题是tab对应的标题 position 当前页面的标志 //getItem 获取当前位置对应的fragment viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { //得到当前页的标题,,,也就是设置当前页面显示的标题是tab对应的标题 @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { NewsFragment newsFragment = new NewsFragment(); //初始化bundle (数据盒子,装数据元素) Bundle bundle = new Bundle(); //Fragment fragment = null; if (list.get(position).equals("福利")){ //fragment = new TouTiaoFragment(); bundle.putString("name","福利"); }else if (list.get(position).equals("Android")){ bundle.putString("name","Android"); }else if (list.get(position).equals("iOS")){ bundle.putString("name","iOS"); }else if (list.get(position).equals("休息视频")){ bundle.putString("name","休息视频"); }else if (list.get(position).equals("拓展资源")){ bundle.putString("name","拓展资源"); }else if (list.get(position).equals("前端")){ bundle.putString("name","前端"); }else if (list.get(position).equals("all")){ bundle.putString("name","all"); } newsFragment.setArguments(bundle); return newsFragment; } @Override public int getCount() { return list.size(); } }); //tablayout要与viewpager关联 tabLayout.setupWithViewPager(viewPager); }}
Myadapter
package com.example.zhoukao;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;/** * Created by Zhijun on 2017/9/18. */public class MyAdapter extends BaseAdapter{ Context context; ArrayList<Beandata.NewslistBean> list; public MyAdapter(Context context, ArrayList<Beandata.NewslistBean> list) { this.context = context; this.list=list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHodle hodle=null; if (view == null){ hodle= new ViewHodle(); view = View.inflate(context,R.layout.listview_items,null); hodle.mtv= (TextView) view.findViewById(R.id.tv); hodle.mimg= (ImageView) view.findViewById(R.id.images); view.setTag(hodle); }else { hodle= (ViewHodle) view.getTag(); } hodle.mtv.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getUrl(),hodle.mimg); return view; } class ViewHodle{ TextView mtv; ImageView mimg; }}
NewsFrament
package com.example.zhoukao;import android.os.AsyncTask;import android.os.Build;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.annotation.RequiresApi;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;
public class NewsFragment extends Fragment{ private PullToRefreshListView listView; private String pagesize="20"; private int page=1; private String mstrings; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.news_layout, container, false); listView = (PullToRefreshListView) view.findViewById(R.id.list_view); listView.getRefreshableView(); listView.setMode(PullToRefreshBase.Mode.BOTH); listView.setScrollingWhileRefreshingEnabled(true); listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { // //完成下拉刷新操作 @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { refreshView.postDelayed(new Runnable() { @Override public void run() { page=1; getDataFromNet(mstrings,pagesize,page); listView.onRefreshComplete(); } }, 2000); } //完成上拉刷新操作 @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { page++; refreshView.postDelayed(new Runnable() { @Override public void run() { if(mstrings!=null&&pagesize!=null){ getDataFromNet(mstrings,pagesize,page); } listView.onRefreshComplete(); } }, 2000); } }); /* //获取带有刷新的对应控件 2 pullToRefreshListView.getRefreshableView(); 3 *//** 4 * 设置刷新的模式:常用的有三种 5 * PullToRefreshBase.Mode.BOTH //上下拉刷新都可以 6 * PullToRefreshBase.Mode.PULL_FROM_START //只允许下拉刷新 7 * PullToRefreshBase.Mode.PULL_FROM_END //只允许上拉刷新 8 * 9 *//* 10 pullToRefreshListView.setMode(PullToRefreshBase.Mode.PULL_FROM_END); 11 //设置是否允许刷新的时候可以滑动 12 pullToRefreshListView.setScrollingWhileRefreshingEnabled(true);*/ // PullToRefreshBase.Mode.BOTH //上下拉刷新都可以 return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); mstrings = bundle.getString("name", "福利"); getDataFromNet(mstrings,pagesize,page); } private void getDataFromNet(final String string,final String pagesize,final int page) { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://api.tianapi.com/social/?key=df7a400c3a15430040a5801ac1899d62&num=10"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(7000); connection.setConnectTimeout(7000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { //原生json Gson gson = new Gson(); Beandata beandata = gson.fromJson(json, Beandata.class); List<Beandata.NewslistBean> list =beandata.getNewslist(); Log.i("aaa", list.toString()); if(list!=null){ MyAdapter myAdapter = new MyAdapter(getActivity(), (ArrayList<Beandata.NewslistBean>) list); listView.setAdapter(myAdapter); } } }; asyncTask.execute(); } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } class Myasyn extends AsyncTask<String,String,String>{ @Override protected String doInBackground(String... params) { return null; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); } }}一定注意自己的依赖有没有
还有接口可以随便换所以Bean类就没有上传
仅供参考!!
阅读全文
1 0
- 联动+加载+Fragment
- Fragment嵌套Fragment,Viewpager和Fragment联动,懒加载
- 側拉加fragment联动
- TableLayout+Fragment +Viewpager 联动
- radiogroup+viewpager+fragment联动,
- 实现tablayout与viewpager联动,viewpager内通过fragment加载listview
- 加载Fragment
- fragment加载
- Viewpager+Fragment联动+水平滚动
- fragment与底部菜单联动
- Viewpager+Fragment 导航栏联动
- 轮播与fragment联动
- TabLayout,ViewPager,Fragment实现联动
- TabLayout,ViewPager,Fragment,实现联动
- Button和Fragment实现联动
- viewpager和fragment的联动
- TabLayout标题和Fragment联动
- Tablayout + Viewpager + Fragment 联动显示
- 第三周 项目1的程序——顺序表的基本运算
- Java Arrays集合方法
- 组合数
- 获取json发到前台web
- 新手易犯的错误:C++类指针成员初始化
- 联动+加载+Fragment
- 函数的递归调用
- Python虚拟环境的安装和配置(windows)
- RecyclerView Demo,瀑布流视频列表GridView
- Intellij IDEA使用git提交代码流程
- 欢迎使用CSDN-markdown编辑器
- JS关于创建类
- jsp 四大属性范围
- Android与前端交互之JSBridge