上拉刷新下拉加载&多条目展示

实现上拉下拉需要先导入XListView Module
导入后需要关联
上拉下拉&获取网络数据

public class MainActivity extends AppCompatActivity {

private XlistView xlv;
private Handler handler = new Handler();

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

    xlv = findViewById(R.id.xlv);
    //设置上拉加载
    xlv.setPullLoadEnable(true);
    //设置下拉刷新
    xlv.setPullRefreshEnable(true);
    //设置监听
    xlv.setXListViewListener(new XlistView.IXListViewListener() {
        @Override
        public void onRefresh() {
            //2秒停止刷新
			//获取系统时间
            getRefreshTime();
            //获取网络数据
            getServerData();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    xlv.stopRefresh();
                }
            }, 2000);
        }

        @Override
        public void onLoadMore() {
            //2秒停止加载
			//获取网络数据
            getServerData();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    xlv.stopLoadMore();
                }
            }, 2000);
        }
    });
    //获取网络数据
    getServerData();
    //获取当前系统时间
    getRefreshTime();

}

//获取当前系统时间
private void getRefreshTime() {

    long time = System.currentTimeMillis();
    Date date = new Date(time);

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd日 HH:mm:ss");
    String s = simpleDateFormat.format(date);
    xlv.setRefreshTime(s);

}

//默认获取数据
private void getServerData() {
    MyAsyncTask task = new MyAsyncTask();
    task.execute();


}

private class MyAsyncTask extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... strings) {
        String path = "http://www.xieast.com/api/news/news.php?page=1";

        try {
            URL url = new URL(path);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            if (conn.getResponseCode() == 200) {

                InputStream inputStream = conn.getInputStream();
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = 0;
                while ((len = inputStream.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                bos.close();
                inputStream.close();
                String json = bos.toString();
                return json;
            }


        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {


        Gson gson = new Gson();
        News news = gson.fromJson(s, News.class);
        List<News.DataBean> data = news.getData();
        MyAdapter adapter = new MyAdapter(MainActivity.this, data);
        xlv.setAdapter(adapter);

    }
}}

图片配置

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();
    //全局配置详细自己配置
    ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)

            .build();

    //初始化
    ImageLoader.getInstance().init(configuration);
   }
}

适配器&listview优化

public class MyAdapter extends BaseAdapter {

private final static int TYPE_ONE = 0;
private final static int TYPE_TWO = 1;
private final static int TYPE_THREE = 2;

private Context context;
private ArrayList<News> list;

public MyAdapter(Context context, ArrayList<News> list) {
    this.context = context;
    this.list = list;
}

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

@Override
public int getItemViewType(int position) {
    if (position%3==0) {
        return TYPE_ONE;
    } else if (position%3==1) {
        return TYPE_TWO;
    } else {
        return TYPE_THREE;
    }
}

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

@Override
public Object getItem(int position) {
    return null;
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHandler1 viewHandler1 = null;
    ViewHandler2 viewHandler2 = null;
    ViewHandler3 viewHandler3 = null;

    int type = getItemViewType(position);
    if (convertView == null) {
        if (type == TYPE_ONE) {
            convertView = View.inflate(context, R.layout.item1, null);
            viewHandler3 = new ViewHandler3();
            viewHandler3.text3 = convertView.findViewById(R.id.text3);
            viewHandler3.img3 = convertView.findViewById(R.id.img3);
            viewHandler3.img33 = convertView.findViewById(R.id.img33);
            viewHandler3.img333 = convertView.findViewById(R.id.img333);
            convertView.setTag(viewHandler3);
        } else if (type == TYPE_TWO) {
            convertView = View.inflate(context, R.layout.item2, null);
            viewHandler2 = new ViewHandler2();
            viewHandler2.text2 = convertView.findViewById(R.id.text2);
            viewHandler2.img2 = convertView.findViewById(R.id.img2);
            viewHandler2.img22 = convertView.findViewById(R.id.img22);
            convertView.setTag(viewHandler2);
        } else {
            convertView = View.inflate(context, R.layout.item3, null);
            viewHandler1 = new ViewHandler1();
            viewHandler1.text1 = convertView.findViewById(R.id.text1);
            viewHandler1.img1 = convertView.findViewById(R.id.img1);
            convertView.setTag(viewHandler1);
        }
    } else {
        if (type == TYPE_ONE) {
            viewHandler3 = (ViewHandler3) convertView.getTag();
        } else if (type == TYPE_TWO) {
            viewHandler2 = (ViewHandler2) convertView.getTag();
        } else {
            viewHandler1 = (ViewHandler1) convertView.getTag();
        }
    }
    News news = list.get(position);
    if (type == TYPE_ONE) {
        viewHandler3.text3.setText(news.getTitle());
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler3.img3);
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s02(), viewHandler3.img33);
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s03(), viewHandler3.img333
        );
    } else if (type == TYPE_TWO) {
        viewHandler2.text2.setText(news.getTitle());
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler2.img2);
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s02(), viewHandler2.img22);
    } else {
        viewHandler1.text1.setText(news.getTitle());
        ImageLoader.getInstance().displayImage(news.getThumbnail_pic_s(), viewHandler1.img1);
    }
    return convertView;
}

class ViewHandler1 {
    private ImageView img1;
    private TextView text1;
}

class ViewHandler2 {
    private ImageView img2;
    private ImageView img22;
    private TextView text2;
}

class ViewHandler3 {
    private ImageView img3;
    private ImageView img33;
    private ImageView img333;
    private TextView text3;
}}

猜你喜欢

转载自blog.csdn.net/weixin_44305652/article/details/85943725