Xlistview刷新数据(多条目)


效果图

 

主界面布局

 

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <me.maxwin.view.XListView
        android:id="@+id/xListView1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

 

 

子布局1

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="50dp" />

</android.support.constraint.ConstraintLayout>

 

子布局2

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f00">

    <TextView
        android:id="@+id/text22"
        android:layout_width="match_parent"
        android:layout_height="50dp" />


</android.support.constraint.ConstraintLayout>

 

 

 主函数界面

package com.example.day;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import me.maxwin.view.XListView;


public class MainActivity extends AppCompatActivity {

    private XListView listView;
    private MyBaseAdapter adapter;
    private int i =1;
    private String url="http://api.expoon.com/AppNews/getNewsList/type/1/p";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        listView = findViewById(R.id.xListView1);
        adapter = new MyBaseAdapter(this);
        listView.setAdapter(adapter);

        listView.setPullLoadEnable(true);
        listView.setPullRefreshEnable(true);

        listView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                i=1;
                initData();
            }

            @Override
            public void onLoadMore() {
                initData();
            }
        });
        initData();
    }

    private void initData() {
        NewUitl.getNewUitl().getRquset(url+i, Bean.class, new NewUitl.CallBak<Bean>() {
            @Override
            public void onsuccess(Bean bean) {
                if (i==1){
                    adapter.setList(bean.getData());
                }else {
                    adapter.addList(bean.getData());
                }
                listView.stopLoadMore();
                listView.stopRefresh();
                i++;
            }
        });

    }

}

 

适配器

 

package com.example.day;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MyBaseAdapter extends BaseAdapter {

    private List<Bean.DataBean> list;
    private Context context;

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

    public void setList(List<Bean.DataBean> list1) {
        list.clear();
        list.addAll(list1);
        notifyDataSetChanged();
    }

    public void addList(List<Bean.DataBean> list1) {
        list.addAll(list1);
        notifyDataSetChanged();
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        return position % 2;
    }

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

    @Override
    public Bean.DataBean 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) {

        if (getItemViewType(position)==0){
            TextViewHolder holder;
            if (convertView==null){
                convertView= LayoutInflater.from(context).inflate(R.layout.iten01,parent,false);
                holder = new TextViewHolder(convertView);
            }else {
                holder= (TextViewHolder) convertView.getTag();
            }
                holder.setData1(getItem(position));
        }else {
            ImageViewHolder holder11;
            if (convertView==null){
                convertView= LayoutInflater.from(context).inflate(R.layout.iten02,parent,false);
                holder11 = new ImageViewHolder(convertView);
            }else {
                holder11= (ImageViewHolder) convertView.getTag();
            }
            holder11.setData2(getItem(position));
        }
        return convertView;
    }
    class TextViewHolder{
        TextView text;

        public TextViewHolder(View convertView) {
            text=convertView.findViewById(R.id.text1);
            convertView.setTag(this);
        }
        public void setData1(Bean.DataBean item) {
            text.setText(item.getNews_title());
        }
    }
    class ImageViewHolder{
        TextView textView;
        public ImageViewHolder(View convertView1) {
            textView= convertView1.findViewById(R.id.text22);
            convertView1.setTag(this);
        }
        public void setData2(Bean.DataBean item) {
            textView.setText(item.getNews_title());
        }
    }
}

 

网络请求数据

 

package com.example.day;

import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class NewUitl {

    private static NewUitl newUitl;

    private NewUitl(){

    }

    public static NewUitl getNewUitl(){
        if (newUitl==null){
            newUitl = new NewUitl();
        }
        return newUitl;
    }

    public interface CallBak<T>{
        void  onsuccess(T t);
    }

    public void getRquset(String s, final Class clazz, final CallBak callBak){
        new AsyncTask<String, Void, Object>() {
            @Override
            protected Object doInBackground(String... strings) {
                return getRquset(strings[0],clazz);
            }

            @Override
            protected void onPostExecute(Object o) {
                callBak.onsuccess(o);
            }
        }.execute(s);

    }

    public  <T>T getRquset(String string, Class clazz) {
        return (T) new Gson().fromJson(getRquset(string),Bean.class);
    }

    public String getRquset(String string) {
        try {
            URL url= new URL(string);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setReadTimeout(3000);
            urlConnection.setConnectTimeout(3000);
            if (urlConnection.getResponseCode()==200){
                String s = Stream2String(urlConnection.getInputStream());
                return s;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public String Stream2String(InputStream inputStream) throws IOException {
        StringBuilder sb= new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
        for (String tmp = br.readLine(); tmp !=null ; tmp=br.readLine()) {
            sb.append(tmp);
        }
        return sb.toString();
    }


}

bean类

package com.example.day;

import java.util.List;

public class Bean {


    private int status;
    private String info;
    private List<DataBean> data;

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {

        private String news_id;
        private String news_title;
        private String news_summary;
        private String pic_url;

        public String getNews_id() {
            return news_id;
        }

        public void setNews_id(String news_id) {
            this.news_id = news_id;
        }

        public String getNews_title() {
            return news_title;
        }

        public void setNews_title(String news_title) {
            this.news_title = news_title;
        }

        public String getNews_summary() {
            return news_summary;
        }

        public void setNews_summary(String news_summary) {
            this.news_summary = news_summary;
        }

        public String getPic_url() {
            return pic_url;
        }

        public void setPic_url(String pic_url) {
            this.pic_url = pic_url;
        }
    }
}

 

 

切记在清单文件中进行注册 网络需要权限

相关文章:

  • 2022-12-23
  • 2021-05-05
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2021-07-03
  • 2021-04-20
  • 2021-11-19
猜你喜欢
  • 2022-01-16
  • 2022-12-23
  • 2021-10-30
  • 2021-12-11
  • 2021-05-16
  • 2021-04-23
  • 2021-10-25
相关资源
相似解决方案