第一步:依赖自定义组件XlistView
第二步:布局引入XlistView组件(自定义组件根目录)
<com.exam.myxlistviewlibrary.utils.view.XListView
android:id="@+id/frag_01_xlv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.exam.myxlistviewlibrary.utils.view.XListView>
第三步:配置Adapter(与listview相同).滑动监听setXlistViewlistenner
package com.exam.week_02.frag;
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 android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.exam.myxlistviewlibrary.utils.NetWordUtils;
import com.exam.myxlistviewlibrary.utils.view.XListView;
import com.exam.week_02.ImageloaderUtil;
import com.exam.week_02.R;
import com.exam.week_02.bena.Data;
import com.exam.week_02.bena.Goods;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
public class Fragment_01 extends Fragment {
String baseUrl = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private XListView xListView;
ArrayList<Data> list = new ArrayList<Data>();
int page;
private MyAdapter myAdapter;
private ImageLoader instance;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_01,container,false);
xListView = view.findViewById(R.id.frag_01_xlv);
instance = ImageLoader.getInstance();
initdata(page);
myAdapter = new MyAdapter();
xListView.setPullLoadEnable(true);
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
list.clear();
initdata(0);
}
@Override
public void onLoadMore() {
page++;
initdata(page);
}
});
return view;
}
private void initdata(int s) {
String url = baseUrl+s;
new MyAsyntask().execute(url);
}
class MyAsyntask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String netjson = NetWordUtils.getNetjson(strings[0]);
return netjson;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Goods goods = gson.fromJson(s, Goods.class);
ArrayList<Data> data = goods.getData();
list.addAll(data);
xListView.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
uiComplete();
}
}
class MyAdapter extends BaseAdapter{
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
@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 View getView(int position, View convertView, ViewGroup parent) {
int itemViewType = getItemViewType(position);
switch (itemViewType){
case 0:
convertView = View.inflate(getActivity(),R.layout.item00,null);
TextView textView = convertView.findViewById(R.id.item00_textView);
ImageView imageView = convertView.findViewById(R.id.item00_image);
textView.setText(list.get(position).getNews_title());
//DisplayImageOptions option = ImageloaderUtil.getDisplayImageOption();
instance.displayImage(list.get(position).getPic_url(),imageView);
break;
case 1:
convertView = View.inflate(getActivity(),R.layout.item11,null);
TextView textView1 = convertView.findViewById(R.id.item11_textView);
textView1.setText(list.get(position).getNews_title());
break;
}
return convertView;
}
}
public void uiComplete(){
xListView.setRefreshTime("刚刚");
xListView.stopRefresh(); //让刷新头消失
xListView.stopLoadMore(); //让上拉加载的ui消失;
}
}