mian首頁
package com.example.weektwo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.xlistviewlib.XListView;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class Fragmentone extends Fragment implements XListView.IXListViewListener{
private XListView xlistview;
private String url="http://www.xieast.com/api/news/news.php?page=";
private List<Gson.DataBean> list=new ArrayList<>();
private int num=1;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragmentone,container,false);
xlistview = view.findViewById(R.id.xlistview);
initData(1);
return view;
}
private void initData(int num) {
AsyncTask<String, Void, List<Gson.DataBean>> execute = new Utile().execute(url + num);
try {
List<Gson.DataBean> dataBeans = execute.get();
//擴充卡
MAdapter mAdapter = new MAdapter(getActivity(), list);
list.addAll(dataBeans);
xlistview.setAdapter(mAdapter);
//上拉
xlistview.setPullLoadEnable(true);
//下拉
xlistview.setPullRefreshEnable(true);
//停止加載
xlistview.stopLoadMore();
//停止重新整理
xlistview.stopRefresh();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void onRefresh() {
num=1;
list.clear();
initData(num);
}
@Override
public void onLoadMore() {
num++;
initData(num);
}
}
mian主布局
<?xml version="1.0" encoding="utf-8"?>
<com.example.xlistviewlib.XListView
android:id="@+id/xlistview"
android:layout_width=“match_parent”
android:layout_height=“match_parent”></com.example.xlistviewlib.XListView>
**MAdapter** package com.example.weektwo;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import java.util.List;
public class MAdapter extends BaseAdapter {
private Context context;
private List<Gson.DataBean> list;
private ImageLoader imageLoader=ImageLoader.getInstance();
private final DisplayImageOptions build;
private final int ONE=0;
private final int TWO=1;
public MAdapter(Context context, List<Gson.DataBean> list) {
this.context = context;
this.list = list;
build = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.showImageForEmptyUri(R.drawable.bga_banner_point_enabled)
.displayer(new CircleBitmapDisplayer())
.build();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
if (position%2==0){
return ONE;
}else{
return TWO;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (type==ONE){
Holder holder;
if (convertView==null){
holder=new Holder();
convertView=LayoutInflater.from(context).inflate(R.layout.item_one,parent,false);
holder.title =(TextView) convertView.findViewById(R.id.title);
holder.image =(ImageView)convertView.findViewById(R.id.image);
convertView.setTag(holder);
}else{
holder = (Holder) convertView.getTag();
}
holder.title.setText(list.get(position).getTitle());
String pic_s = list.get(position).getThumbnail_pic_s();
imageLoader.displayImage(pic_s,holder.image,build);
}else{
Holder2 holder2;
if (convertView==null){
holder2=new Holder2();
convertView=LayoutInflater.from(context).inflate(R.layout.item_two,parent,false);
holder2.titlel =(TextView) convertView.findViewById(R.id.titlel);
holder2.image1 =(ImageView) convertView.findViewById(R.id.image1);
holder2.image2 =(ImageView) convertView.findViewById(R.id.image2);
holder2.image3 =(ImageView) convertView.findViewById(R.id.image3);
convertView.setTag(holder2);
}else{
holder2 = (Holder2) convertView.getTag();
}
holder2.titlel.setText(list.get(position).getTitle());
String thumbnail_pic_s = list.get(position).getThumbnail_pic_s();
String thumbnail_pic_s02 = list.get(position).getThumbnail_pic_s02();
String thumbnail_pic_s03 = list.get(position).getThumbnail_pic_s03();
imageLoader.displayImage(thumbnail_pic_s,holder2.image1,build);
imageLoader.displayImage(thumbnail_pic_s02,holder2.image2,build);
imageLoader.displayImage(thumbnail_pic_s03,holder2.image3,build);
}
return convertView;
}
class Holder{
ImageView image;
TextView title;
}
class Holder2{
ImageView image3;
ImageView image2;
ImageView image1;
TextView titlel;
}
}
Utile資料請求
package com.example.weektwo;
import android.os.AsyncTask;
import com.google.common.io.CharStreams;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class Utile extends AsyncTask<String,Void,List<Gson.DataBean>> {
private Gson gson;
@Override
protected List<Gson.DataBean> doInBackground(String... strings) {
try {
//擷取位址
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//方法
urlConnection.setRequestMethod("GET");
//連接配接逾時
urlConnection.setConnectTimeout(5000);
//讀取逾時
urlConnection.setReadTimeout(5000);
//結果碼
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
String s = CharStreams.toString(new InputStreamReader(urlConnection.getInputStream()));
gson = new com.google.gson.Gson().fromJson(s, Gson.class);
return gson.getData();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
one布局
<?xml version="1.0" encoding="utf-8"?>
***two布局*** <?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/titlel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/image1"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:id="@+id/image2"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:id="@+id/image3"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>