1.Fragment
ArrayList<Fragment> data = new ArrayList<Fragment>();
data.add(new ListFrag());
data.add(new GridFrag());
//适配器
FragAdter adter = new FragAdter(getSupportFragmentManager(),data);
pager.setAdapter(adter);
radioGroup.check(radioGroup.getChildAt(0).getId());
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
radioGroup.check(radioGroup.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radioButton1:
pager.setCurrentItem(0);
break;
case R.id.radioButton2:
pager.setCurrentItem(1);
break;
}
}
});
Fragment布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="10"
></android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:gravity="center"
>
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="11"
android:gravity="center"
android:button="@null"
/>
<RadioButton
android:id="@+id/radioButton2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="11"
android:gravity="center"
android:button="@null"
/>
</RadioGroup>
</LinearLayout>
2.Http和AsyncTask结合
public class Http {
public static void httpAsynTask (String str,final CallBackString backString){
new AsyncTask<String,Integer,String>(){
//子线程
@Override
protected String doInBackground(String... strings) {
return reputHttpGet(strings[0]);
}
//主线程
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
backString.getData(s);
}
}.execute(str);
}
//接口
public interface CallBackString{
void getData(String s);
}
public CallBackString backString;
public void setBackString(CallBackString backString) {
this.backString = backString;
}
//http
public static String reputHttpGet(String s){
try {
URL url = new URL(s);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
StringBuilder builder = new StringBuilder();
String st="";
while ((st = reader.readLine())!=null){
builder.append(st);
}
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
3.单独的AsyncTask和接口
public class Mytask extends AsyncTask<String,Integer,String> {
//子线程
@Override
protected String doInBackground(String... strings) {
//利用子线程请求数据
return Http.reputHttpGet(strings[0]);
}
//主线程
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//调用
callBack.getData(s);
}
//创建接口
public interface CallBack {
String getData(String s);
}
private CallBack callBack;
public void setCallBack(CallBack callBack) {
this.callBack = callBack;
}
}
4. ImageLoader
public class ImagLoad extends Application {
@Override
public void onCreate() {
super.onCreate();
//设置框架的属性
DisplayImageOptions options = new DisplayImageOptions.Builder()
//占位图
.showImageOnLoading(R.mipmap.ic_launcher)
//圆角
.displayer(new RoundedBitmapDisplayer(10))
.build();
//设置
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options).build();
//获得实例
ImageLoader imageLoader = ImageLoader.getInstance();
//初始化
imageLoader.init(configuration);
}
}
5.XListView
//启动或禁用上拉加载
xListView.setPullLoadEnable(true);
//注册接口
xListView.setXListViewListener(new XListView.IXListViewListener() {
//下拉加载
@Override
public void onRefresh() {
Http.httpAsynTask(s, new Http.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
data = jsonBean.getData();
//适配器
xListAdter = new XListAdter(data,getActivity());
xListView.setAdapter(xListAdter);
onLog();
}
});
}
//上拉刷新
@Override
public void onLoadMore() {
Http.httpAsynTask(s, new Http.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> data1 = jsonBean.getData();
data.addAll(data1);
xListAdter.notifyDataSetChanged();
onLog();
}
});
}
});
//数据
Http.httpAsynTask(s, new Http.CallBackString() {
@Override
public void getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
data = jsonBean.getData();
//适配器
xListAdter = new XListAdter(data,getActivity());
xListView.setAdapter(xListAdter);
}
});
return view;
}
private void onLog(){
//重置头视图
xListView.stopRefresh();
//重置脚视图
xListView.stopLoadMore();
//设置刷新时间
xListView.setRefreshTime("刚刚刷新了");
}
}
6.XListView适配器
public class XListAdter extends BaseAdapter {
private List<JsonBean.DataBean> data;
private Context context;
public XListAdter(List<JsonBean.DataBean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position%2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
switch (getItemViewType(position)){
case 0:
Holder holder;
if (convertView==null){
convertView = View.inflate(context,R.layout.item,null );
holder = new Holder();
holder.name=convertView.findViewById(R.id.name);
holder.imag = convertView.findViewById(R.id.imag);
convertView.setTag(holder);
}
else{
holder = (Holder) convertView.getTag();
}
JsonBean.DataBean dataBean = data.get(position);
holder.name.setText(dataBean.getTitle());
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s03(),holder.imag);
break;
case 1:
Holder2 holder2;
if (convertView==null){
convertView = View.inflate(context,R.layout.item2,null );
holder2 = new Holder2();
holder2.name2=convertView.findViewById(R.id.name2);
holder2.imag2 = convertView.findViewById(R.id.imag2);
convertView.setTag(holder2);
}
else{
holder2 = (Holder2) convertView.getTag();
}
JsonBean.DataBean dataBean2 = data.get(position);
holder2.name2.setText(dataBean2.getTitle());
ImageLoader.getInstance().displayImage(dataBean2.getThumbnail_pic_s03(),holder2.imag2);
break;
}
return convertView;
}
class Holder{
ImageView imag;
TextView name;
}
class Holder2{
ImageView imag2;
TextView name2;
}
}
7.GridView
gridView = view.findViewById(R.id.gridView);
//请求数据
Mytask mytask = new Mytask();
mytask.setCallBack(this);
mytask.execute("http://www.xieast.com/api/news/news.php?page=1");
return view;
}
@Override
public String getData(String s) {
Gson gson = new Gson();
JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
List<JsonBean.DataBean> data = jsonBean.getData();
GridAdter adter = new GridAdter(data,getActivity());
gridView.setAdapter(adter);
return null;
}
}
8.GridView适配器
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView==null){
convertView = View.inflate(context,R.layout.item,null );
holder = new Holder();
holder.name=convertView.findViewById(R.id.name);
holder.imag = convertView.findViewById(R.id.imag);
convertView.setTag(holder);
}
else{
holder = (Holder) convertView.getTag();
}
JsonBean.DataBean dataBean = data.get(position);
holder.name.setText(dataBean.getTitle());
ImageLoader.getInstance().displayImage(dataBean.getThumbnail_pic_s03(),holder.imag);
return convertView;
}
class Holder{
ImageView imag;
TextView name;
}
}