天天看點

多條目+XListview+上拉+下拉

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>