您的位置:首页 > Web前端 > JavaScript

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

2017-09-19 18:56 375 查看
//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 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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: