联动+加载+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类就没有上传

仅供参考!!

原创粉丝点击