Xlistview上拉加载,下拉刷新、多条目展示以及获取系统时间

来源:互联网 发布:接口平台 java 编辑:程序博客网 时间:2024/06/07 17:00
  • 首先导入依赖:gson、imageLoader
compile ‘com.google.code.gson:gson:2.2.4’ compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5
  • 在布局文件中:
<com.bwie.xlistviewlibrary.View.XListView        android:id="@+id/xlv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_weight="3"        />

子布局。。。。。。。。


  • 然后在activity中处理一些数据。。。。

    /**

    • Oncreat()方法中的操作
      */
private int type = 1;private int pages = 1;    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xlv = (XListView) findViewById(R.id.xlv);        //加载更多        xlv.setPullLoadEnable(true);      //下拉刷新        xlv.setPullRefreshEnable(true);      //给xlistview设置监听事件        xlv.setXListViewListener(new XListView.IXListViewListener() {            @Override            public void onRefresh() {               type = 1;                pages = 1;                new MyTask().execute(path);            }            @Override            public void onLoadMore() {                type = 2;                pages++;                new MyTask().execute("http://api.tianapi.com/mobile/?key=d28c274e60a1a76155e97dc199dbfacc&num=10&page="+pages);            }        });        new MyTask().execute(path);    }

自定义一个MyTask类

class MyTask extends AsyncTask<String,String,String> {        private List<Bean.NewslistBean> newslist;        @Override        protected String doInBackground(String... strings) {            String path = strings[0];            try {                   /*                   得到当前需要的path                    */                URL url = new URL(path);                /**                 * 得到网络请求                 */                HttpURLConnection connection = (HttpURLConnection) url.openConnection();                /**                 * 设置延时时间                 */                connection.setConnectTimeout(3000);                //得到请求方式                connection.setRequestMethod("GET");                //得到请求码                int responseCode = connection.getResponseCode();                   /*                     判断是否请求成功                    */                if (responseCode == 200) {                    int len;                    byte[] b = new byte[1024 * 20];                    InputStream inputStream = connection.getInputStream();                    outputStream = new ByteArrayOutputStream();                    while ((len = inputStream.read(b)) != -1) {                        outputStream.write(b,0,len);                    }                }                return outputStream.toString();//返回数据信息            } catch (Exception e) {                e.printStackTrace();            }            return null;//返回空        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            /**             * 转换json串             */            Bean json = gson.fromJson(s, Bean.class);            newslist = json.getNewslist();            if(type==1){                list.clear();                list.addAll(newslist);                MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);                xlv.setAdapter(adapter1);                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        Date date = new Date(System.currentTimeMillis());                        SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd  HH:mm:ss");                        String s = format.format(date);                        xlv.setRefreshTime(s);                        xlv.stopRefresh();                    }                },1000);            }else if(type==2){                list.addAll(newslist);                MyAdapter adapter1 = new MyAdapter(MainActivity.this,newslist);                xlv.setAdapter(adapter1);                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        xlv.stopLoadMore();                    }                },1000);            }        }    }

自定义一个Adapter进行展示数据

public class MyAdapter extends BaseAdapter {    Context context;    List<Bean.NewslistBean> list;    public MyAdapter(Context context,List<Bean.NewslistBean> list){        this.context = context;        this.list=list;    }    @Override    public int getCount() {        return list.size();}    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }/*** 优化,展示数据 *  无viewHolder  详情看博客的详细细节*/    @Override    public View getView(int i, View view, ViewGroup viewGroup) {       if(i%2==0){           if(view==null){               view = View.inflate(context, R.layout.main_item,null);           }               ImageView iv = view.findViewById(R.id.iv);               TextView tv = view.findViewById(R.id.tv);               String s = list.get(i).getPicUrl();               ImageLoader.getInstance().displayImage(s,iv);               tv.setText(list.get(i).getTitle());           return view;       }else{           if(view==null){              view = View.inflate(context, R.layout.main_item1,null);           }               ImageView iv1 = view.findViewById(R.id.iv1);               TextView tv1 = view.findViewById(R.id.tv1);               String s1 = list.get(i).getPicUrl();               ImageLoader.getInstance().displayImage(s1,iv1);               tv1.setText(list.get(i).getTitle());           return view;       }    }}
原创粉丝点击