PullToRefreshListView今日头条初始页面

来源:互联网 发布:sql 数据挖掘分析 编辑:程序博客网 时间:2024/05/29 13:52

权限

 <uses-permission android:name="android.permission.INTERNET"></uses-permission>    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//其余事项

 library,Imager_Loader,Gson

<RelativeLayout    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:layout_height="match_parent" tools:context="com.example.fxf.lianshou.MainActivity">    <HorizontalScrollView        android:id="@+id/hs"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <LinearLayout            android:id="@+id/linearlayout"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal"></LinearLayout>    </HorizontalScrollView>    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/hs"/></RelativeLayout>
ff.xml         相当于fragment01

 <com.handmark.pulltorefresh.library.PullToRefreshListView        android:layout_width="match_parent"        android:id="@+id/pulltorefresh"        android:layout_height="match_parent">    </com.handmark.pulltorefresh.library.PullToRefreshListView>

layout.xml       相当于fragment02

<TextView        android:id="@+id/textview"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="123456789"/>    <ImageView        android:id="@+id/imageview"        android:layout_width="80dp"        android:layout_height="80dp"        android:src="@mipmap/ic_launcher"        />

BaseAppication.java

import android.app.Application;public class BaseApplication extends Application {    @Override    public void onCreate() {        super.onCreate();    }}

App.java             需要在权限中:

<application    android:name=".App"

import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;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 com.nostra13.universalimageloader.core.download.BaseImageDownloader;public class App  extends BaseApplication{    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration config = new ImageLoaderConfiguration                .Builder(this)                // max width, max height,即保存的每个缓存文件的最大长宽                .memoryCacheExtraOptions(480, 800)                //线程池内加载的数量                .threadPoolSize(5)                .threadPriority(Thread.NORM_PRIORITY - 2)                .denyCacheImageMultipleSizesInMemory()                // You can pass your own memory cache implementation/你可以通过自己的内存缓存实现                .memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))                .memoryCacheSize(2 * 1024 * 1024)                .tasksProcessingOrder(QueueProcessingType.LIFO)                .defaultDisplayImageOptions(DisplayImageOptions.createSimple())                // connectTimeout (5 s), readTimeout (30 s)超时时间                .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))                // Remove for release app                .writeDebugLogs()                //开始构建                .build();        //初始化imageloader;        ImageLoader.getInstance().init(config);    }}

Bean.java         //解析Gson     通过Gson包自己解析

import java.util.List;public class Bean {    private boolean error;    private List<ResultsBean> results;    public boolean isError() {        return error;    }    public void setError(boolean error) {        this.error = error;    }    public List<ResultsBean> getResults() {        return results;    }    public void setResults(List<ResultsBean> results) {        this.results = results;    }    public static class ResultsBean {        private String _id;        private String createdAt;        private String desc;        private String publishedAt;        private String source;        private String type;        private String url;        private boolean used;        private String who;        private List<String> images;        public String get_id() {            return _id;        }        public void set_id(String _id) {            this._id = _id;        }        public String getCreatedAt() {            return createdAt;        }        public void setCreatedAt(String createdAt) {            this.createdAt = createdAt;        }        public String getDesc() {            return desc;        }        public void setDesc(String desc) {            this.desc = desc;        }        public String getPublishedAt() {            return publishedAt;        }        public void setPublishedAt(String publishedAt) {            this.publishedAt = publishedAt;        }        public String getSource() {            return source;        }        public void setSource(String source) {            this.source = source;        }        public String getType() {            return type;        }        public void setType(String type) {            this.type = type;        }        public String getUrl() {            return url;        }        public void setUrl(String url) {            this.url = url;        }        public boolean isUsed() {            return used;        }        public void setUsed(boolean used) {            this.used = used;        }        public String getWho() {            return who;        }        public void setWho(String who) {            this.who = who;        }        public List<String> getImages() {            return images;        }        public void setImages(List<String> images) {            this.images = images;        }    }}

Fragment1.java

import android.os.Bundle;import android.support.annotation.Nullable;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.TextView;public class Fragment1 extends Fragment{    String TAG = "fxf";    private String url;    private int page = 1;    public static Fragment1 getins(String title){        Fragment1 fragment1 = new Fragment1();        Bundle bundle = new Bundle();        bundle.putString("title",title);        fragment1.setArguments(bundle);        return fragment1;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        Bundle arguments = getArguments();        //得到url        //http://gank.io/api/data/Android/10/1        url = arguments.getString("title")+page;        Log.e(TAG, "传递过来的url "+ url);        TextView textView = new TextView(getActivity());        textView.setText(url);        return textView;    }    @Override    public void onResume() {        super.onResume();        getNetData( 1);    }    //根据url获取网络数据; 解析给Listview,加上PullToRefresh;    private void getNetData(int page) {        // NetWorkUtil.getNetString();    }    /**     * 下啦,     *  把集合清空,重新加载数据;     */    /**     * 上啦,     *      page++;     *      getNetData(page)     *      list.addall();     *      adapter.setDataNotifyChanged();     *     */}

NetWorkUtil.java

import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class NetWorkUtil {    private int responseCode;    /**     * 获取图片并返回;     * @param urlString     * @return     */    public Bitmap getNetImage(String urlString){        try {            //得到URL对象,这个对象可以打开连接            URL url = new URL(urlString);            //打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类            HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();            //服务器返回的状态码            int responseCode = urlConnection.getResponseCode();            //请求成功            if (responseCode == 200){                InputStream inputStream = urlConnection.getInputStream();                //BitmapFactory类封装了好多关于图片处理的方法;                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);                return  bitmap;            }else {                Log.e("wzq请求图片","responseCode:"+ responseCode);            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 请求json字符串,     * @param urlString url     * @return   json字符串     */    public static String getNetString(String urlString){        try {            //得到URL对象,这个对象可以打开连接            URL url = new URL(urlString);            //打开连接,HttpURLConnection:是URLConnection的子类;子类的方法比较多;都用子类            HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();            //服务器返回的状态码            int responseCode = urlConnection.getResponseCode();            //请求成功            if (responseCode == 200){                InputStream inputStream = urlConnection.getInputStream();                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));                StringBuilder stringBuilder = new StringBuilder();                String stringTemp = "";                while ((stringTemp = bufferedReader.readLine()) != null) {                    stringBuilder.append(stringTemp);                }                String result = stringBuilder.toString();                Log.e("wzq请求json", "result:" + result);                return result;            }else {                Log.e("wzq","responseCode:"+ responseCode);            }        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}

MainActivity.java

import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    String baseUrl = "http://gank.io/api/data/";    String[] titles = new String[]{"福利", "Android", "iOS", "休息视频", "拓展资源", "前端", "all"};    private HorizontalScrollView hs;    private LinearLayout linearlayout;    private ViewPager viewpager;    private ArrayList<TextView> textViewList;    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            String result = (String) msg.obj;            parseData(result);        }    };    private void parseData(String result) {        //Log.d("TAG",""+s);        Gson gson = new Gson();        Bean bean = gson.fromJson(result, Bean.class);        List<Bean.ResultsBean> results = bean.getResults();        textViewList = new ArrayList<TextView>();        for (int i = 0; i < results.size(); i++) {            final TextView textView = new TextView(MainActivity.this);            textView.setText(results.get(i).getType() + i);            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);            //添加到集合            textViewList.add(textView);            viewpager.setAdapter(new MAdapter(getSupportFragmentManager()));            viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {                @Override                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                    for (int i = 0; i < textViewList.size(); i++) {                        if (position == i) {                            textViewList.get(i).setTextColor(Color.RED);                        } else {                            textViewList.get(i).setTextColor(Color.BLACK);                        }                        //获取当前的textview                        TextView textView = textViewList.get(position);                        //width是每次滑动的距离                        int width = textView.getWidth();                        //让scrollView滑动   滑动距离是textview之间的间距                        hs.scrollTo(width * position, 0);                    }                }                @Override                public void onPageSelected(int position) {                }                @Override                public void onPageScrollStateChanged(int state) {                }            });        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        hs = (HorizontalScrollView) findViewById(R.id.hs);        linearlayout = (LinearLayout) findViewById(R.id.linearlayout);        viewpager = (ViewPager) findViewById(R.id.viewpager);        new Thread() {            @Override            public void run() {                super.run();                String result = NetWorkUtil.getNetString("http://gank.io/api/data/Android/10/1");                Message message = handler.obtainMessage();                message.obj = result;                handler.sendMessage(message);            }        }.start();    }    class MAdapter extends FragmentPagerAdapter {        public MAdapter(FragmentManager fm) {            super(fm);        }        /*         *  如何向Fragment中传递url,         *         */        @Override        public Fragment getItem(int position) {            ////提交的数据需要进行URL编码,字母和数字编码后都不变//            String path = "http://192.168.252.1:8080/web/LoginServlet?name="+ URLEncoder.encode(name)+"&password="+pass;            return Fragment1.getins(baseUrl + titles[position] + "/10/1");        }        @Override        public int getCount() {            return textViewList.size();        }    }}








原创粉丝点击