动态创建Fragment与TextView配合PullToRefresh刷新json串左右滑动

来源:互联网 发布:java in是什么意思啊 编辑:程序博客网 时间:2024/06/04 15:16

//Layout_Fragment布局代码

<?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/ptf_01"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>

//Fragment代码

package com.bwie.ptw;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;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.ListView;import com.bwie.ptw.adapter.ptf_adapter;import com.bwie.ptw.bean.jsonbean;import com.bwie.ptw.bean.lvbean;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;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;import java.net.URLEncoder;import java.util.LinkedList;import java.util.List;/** * author:Created by WangZhiQiang on 2017/9/19. */public class Fragments extends Fragment {    private View view;    private String url = "http://gank.io/api/data/";    private int i = 1;    private PullToRefreshListView ptf_01;    private LinkedList<lvbean> list = new LinkedList<lvbean>();    private String strs;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.layout_fgmt, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        ptf_01 = (PullToRefreshListView) view.findViewById(R.id.ptf_01);        ptf_01.setMode(PullToRefreshBase.Mode.BOTH);        Bundle bundle = getArguments();        strs = bundle.getString("str");        Log.e("asd", strs.toString());        //一个新的json串        Async();//解析json串        ptf_01.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {                //下拉刷新的方法                new MyAsync1().execute();            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {            //上拉加载的方法                new MyAsync2().execute();            }        });    }    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 1) {                Gson gson = new Gson();                jsonbean jsonbean = gson.fromJson((String) msg.obj, jsonbean.class);                List<com.bwie.ptw.bean.jsonbean.ResultsBean> results = jsonbean.getResults();                for (int j = 0; j < results.size(); j++) {                    String title = results.get(j).getDesc();                    if (results.get(j).getImages() != null) {                        List<String> images = results.get(j).getImages();                        String img = images.get(0);                        list.add(new lvbean(title, img));                    } else {                        list.add(new lvbean(title));                    }                }                ptf_01.setAdapter(new ptf_adapter(getActivity(), list));                Log.e("wwwwww", "我我我");            }        }    };    //解析json串    private void Async() {        new Thread() {            @Override            public void run() {                try {                    String new_url = url + URLEncoder.encode(strs) + "/10/" + i;//i代表刷新时要更换的页面                    URL url = new URL(new_url);                    Log.e("sadas", new_url);                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                    int responseCode = urlConnection.getResponseCode();                    InputStream inputStream = urlConnection.getInputStream();                    if (responseCode == 200) {                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));                        StringBuilder builder = new StringBuilder();                        String stringTemp = "";                        while ((stringTemp = reader.readLine()) != null) {                            builder.append(stringTemp);                        }                        Message message = new Message();                        message.what = 1;                        message.obj = builder.toString();                        handler.sendMessage(message);                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }            }        }.start();    }    public static Fragment receive(String str) {        //静态方法传值        Bundle bundle = new Bundle();        bundle.putString("str", str);        Fragments fragment = new Fragments();        fragment.setArguments(bundle);        return fragment;    }    //下拉刷新的方法    class MyAsync1 extends AsyncTask<Void, Void, String> {        @Override        protected String doInBackground(Void... voids) {            try {                Thread.sleep(2000);            } catch (InterruptedException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            list.clear();            i++;            Async();            ptf_01.onRefreshComplete();            super.onPostExecute(s);        }    }    //上拉加载的方法    class MyAsync2 extends AsyncTask<Void, Void, String> {        @Override        protected String doInBackground(Void... voids) {            try {                Thread.sleep(2000);            } catch (InterruptedException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            i++;            Async();            ptf_01.onRefreshComplete();        }    }}
//Layout_main布局

<?xml version="1.0" encoding="utf-8"?><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.bwie.ptw.MainActivity">    <HorizontalScrollView        android:id="@+id/ho"        android:layout_width="match_parent"        android:layout_height="wrap_content">        <LinearLayout            android:id="@+id/li"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal" />    </HorizontalScrollView>    <android.support.v4.view.ViewPager        android:id="@+id/viewpage"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@id/ho" /></RelativeLayout>
//MainActivity代码

package com.bwie.ptw;import android.graphics.Color;import android.os.Bundle;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.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {    private PullToRefreshListView ptf;    private String title[] = new String[]{"福利", "Android", "iOS", "休息视频", "拓展资源", "前端", "all"};    private ArrayList<TextView> tx_list = new ArrayList<TextView>();//存放TextView    private HorizontalScrollView ho;    private LinearLayout li;    private LinearLayout.LayoutParams params;    private TextView textView;    private Fragment fragment;    private ViewPager viewpage;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取控件id        ho = (HorizontalScrollView) findViewById(R.id.ho);        li = (LinearLayout) findViewById(R.id.li);        viewpage = (ViewPager) findViewById(R.id.viewpage);        initTitle();//初始化标题        viewpage.setAdapter(new MyFragAdapter(getSupportFragmentManager()));        initColor();//初始化标题颜色    }    private void initColor() {        for (int i = 0; i < tx_list.size(); i++) {            final TextView tv = tx_list.get(i);            tv.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    viewpage.setCurrentItem(tv.getId() - 1000);                    tv.setTextColor(Color.RED);                }            });        }        viewpage.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                for (int i = 0; i <tx_list.size() ; i++) {                    TextView tv1 = tx_list.get(i);                    if (i == position) {                        tv1.setTextColor(Color.RED);                    } else {                        tv1.setTextColor(Color.BLACK);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private void initTitle() {        for (int i = 0; i < title.length; i++) {            textView = new TextView(MainActivity.this);            textView.setText(title[i]);            textView.setId(i + 1000);            textView.setTextSize(20);            params = new LinearLayout.LayoutParams                    (ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);            params.setMargins(20, 10, 10, 10);//各种属性            li.addView(textView, params);//添加到LinearLayou布局里面            tx_list.add(textView);//将动态添加的TextView添加到集合,方便使用        }    }    //初始化页面    class MyFragAdapter extends FragmentPagerAdapter {        public MyFragAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {//返回标题上的每个标签(关注,新闻,国际)            Log.e("asdasd","asdasdasd"+title[position].toString());            return new Fragments().receive(title[position].toString());        }        @Override        public int getCount() {            return tx_list.size();        }    }}

原创粉丝点击