XlistView(POST解析、吐司)

本文介绍了一个使用XListView实现下拉刷新和上拉加载更多功能的示例应用。通过AsyncTask异步获取数据,并利用Gson进行JSON解析,展示了如何自定义适配器来填充XListView。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.day10_xlistview2;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;

public class MainActivity extends AppCompatActivity{

    private XListView xlv;
    int indax=1;
    Youhua youhua;
    private boolean flag = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xlv = (XListView) findViewById(R.id.xlv);
        //设置上啦下拉刷新
        xlv.setPullLoadEnable(true);
        //xlv监听事件
        xlv.setXListViewListener(new XListView.IXListViewListener() {
            //下拉刷新
            @Override
            public void onRefresh() {
                flag = false;
                indax--;

                if (indax ==1){
                    indax=5;
                }
                getData("http://apis.juhe.cn/cook/query.php",indax+"",10+"");
                
                Toast.makeText(MainActivity.this,"刷新完成",Toast.LENGTH_SHORT).show();

xlv.stopRefresh(true); } //上啦加载 @Override public void onLoadMore() { flag = true; indax--; if (indax == 1){ indax =5; } getData("http://apis.juhe.cn/cook/query.php",indax+"",10+"");
                Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_SHORT).show();

xlv.stopLoadMore(); } }); //1=第一条数据 , 2=等于一次加载10添加数据 getData("http://apis.juhe.cn/cook/query.php",indax+"",10+""); } //pn等于开始页面 rn等于下一个页面 public void getData(String data,String pn,String rn){ new AsyncTask<String,Void,String>(){ @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); List<Bean.ResultBean.DataBean> list = bean.getResult().getData(); //绑定适配器 youhua = new Youhua(list); xlv.setAdapter(youhua); } @Override protected String doInBackground(String... strings) { try { String url = strings[0]; String pn = strings[1]; String rn = strings[2]; HttpURLConnection connection= (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("POST"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); //POST方法 OutputStream os = connection.getOutputStream(); os.write(("key=81921c6270f37eeec75be4081bd61e91&menu=" + URLEncoder.encode("秘制红烧肉","utf-8")+"&pn="+pn+"&rn="+rn).getBytes()); os.flush(); int code = connection.getResponseCode(); if (code == 200){ InputStream is = connection.getInputStream(); String shuju = Jiexi.shuju(is); return shuju; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(data,pn,rn); } //适配器 class Youhua extends BaseAdapter{ List<Bean.ResultBean.DataBean> list; public Youhua(List<Bean.ResultBean.DataBean> list) { this.list = list; } @Override public int getCount() { if (list != null){ return list.size(); } return 0; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return 0; } @Override public View getView(int i, View view, ViewGroup viewGroup) { TextView tv = new TextView(MainActivity.this); tv.setHeight(100); tv.setText(list.get(i).getTags()); return tv; } }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值