XListView上拉加载,下拉刷新

105 阅读1分钟

1.MainActivity页面

public class MainActivity extends AppCompatActivity {

private XListView xListView;
private int page;
private NewsAdapter adapter;
private String path = "http://www.xieast.com/api/news/news.php?page=%d";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
page = 1;
//获取资源ID
xListView = findViewById(R.id.listview);
//实例化适配器
adapter = new NewsAdapter(this);
xListView.setAdapter(adapter);
//设置可以刷新加载
xListView.setPullLoadEnable(true);
xListView.setPullRefreshEnable(true);
//设置监听
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
page = 1;
initData();
}

@Override
public void onLoadMore() {
initData();
}
});
initData();
}
//得到数据并添加适配器
public void initData(){
NetUtil.getJson(String.format(path, page), NewsBean.class, new NetUtil.CallBack<NewsBean>() {
@Override
public void sucess(NewsBean o) {
if(page == 1){
adapter.setdata(o.getData());
}else{
adapter.adddata(o.getData());
}
page++;
//停止刷新加载
xListView.stopRefresh();
xListView.stopLoadMore();

}
});
}
}

2.多条目适配器

public class NewsAdapter extends BaseAdapter {
private Context context;
private List<NewsBean.DataBean> list;

public NewsAdapter(Context context) {
this.context = context;
list = new ArrayList<>();
}

public void setdata(List<NewsBean.DataBean> lists){
list.clear();
list.addAll(lists);
notifyDataSetChanged();
}

public void adddata(List<NewsBean.DataBean> lists){
list.addAll(lists);
notifyDataSetChanged();
}


@Override
public int getCount() {
return list.size();
}

@Override
public NewsBean.DataBean getItem(int position) {
return list.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

private final int TYPE_COUNT = 2;
private final int TYPE_ONE = 0;
private final int TYPE_TWO =1;
@Override
public int getViewTypeCount() {
return TYPE_COUNT;
}

@Override
public int getItemViewType(int position) {
if(list.get(position).getThumbnail_pic_s02() == null){
return TYPE_ONE;
}else{
return TYPE_TWO;
}

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(getItemViewType(position) == TYPE_ONE){
ViewHolder holder;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
holder = new ViewHolder();
holder.textView = convertView.findViewById(R.id.textView);
holder.imageView = convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText(getItem(position).getTitle());
ImageLoader.getInstance().displayImage(getItem(position).getThumbnail_pic_s(),holder.imageView);
}else{
NewsHolder holder;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.items,parent,false);
holder = new NewsHolder();
holder.textView = convertView.findViewById(R.id.textView2);
holder.imageView = convertView.findViewById(R.id.imageView2);
holder.imageView2 = convertView.findViewById(R.id.imageView3);
holder.imageView3 = convertView.findViewById(R.id.imageView4);
convertView.setTag(holder);
}else{
holder = (NewsHolder) convertView.getTag();
}
holder.textView.setText(getItem(position).getTitle());
ImageLoader.getInstance().displayImage(getItem(position).getThumbnail_pic_s(),holder.imageView);
ImageLoader.getInstance().displayImage(getItem(position).getThumbnail_pic_s02(),holder.imageView2);
ImageLoader.getInstance().displayImage(getItem(position).getThumbnail_pic_s03(),holder.imageView3);
}
return convertView;
}

class ViewHolder{
TextView textView;
ImageView imageView;
}
class NewsHolder{
TextView textView;
ImageView imageView,imageView2,imageView3;
}
}

使用XListview记得导入依赖!