动态创建Fragment与TextView配合PullToRefresh刷新json串左右滑动
2017-09-19 18:56
375 查看
//Layout_Fragment布局代码
//Fragment代码
//Layout_main布局
//MainActivity代码
<?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 onPullD 4000 ownToRefresh(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; [b]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(); } } }
相关文章推荐
- Android:详情界面左右滑动看更多,ViewPager动态添加Fragment,仿51job详情界面
- 使用PagerTabStrip配合ViewPager实现左右滑动标题栏的效果
- FragmentTabHost + pageView 实现可左右滑动的底部菜单 ...
- 在ViewPager中使用Fragment实现界面左右滑动
- Android实现多页左右滑动效果,支持子view动态创建和cache
- 利用ViewPager+Fragment+actionbar实现可左右滑动的Action Tab
- Android开发:监听当前View的左右滑动事件,并返回给当前的activity或者fragment
- Android应用开发—TextView的动态创建
- Fragment+ViewPager实现左右滑动
- Android如何动态的给TextView左右上下添加图片
- 第三十一天 ViewPager(带小圆点的图片左右循环滑动)、Fragment
- Fragment利用ViewPager实现左右滑动--第三方开源--SlidingTabLayout和SlidingTabStrip实现
- ViewPager的一个应用,用fragment来当页面,可以左右滑动,上面有一条线,来分隔
- Android开发:ViewPager+Fragment满足内容区域左右滑动
- ViewPager+Fragment实现TabHost,Fragment动态添加、删除,Tab选项卡跟随滑动
- ViewPager+DialogFragment实现弹窗左右滑动切换
- 利用ViewPager+FragmentPagerAdapter+Fragment做一个能左右滑动的页面
- 如何获得一个动态创建的textview的ID?
- 自定义的带tab的可左右滑动的viewpager之三fragment之间信息的传递