xlistview的实现
来源:互联网 发布:心理训练软件 编辑:程序博客网 时间:2024/06/12 00:41
XML布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.weikai09d20170911.view.XListView android:id="@+id/xListView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000"> </com.example.weikai09d20170911.view.XListView></RelativeLayout>
MainActivity主页面package com.example.weikai09d20170911;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import com.example.weikai09d20170911.view.XListView;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.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.nio.file.Path;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { //设置地址路径 private String path="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="; //初始化值 private int NUM=10; private XListView xListView; private List<Bean.DataBean> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 xListView = (XListView) findViewById(R.id.xListView); //设置可以加载 xListView.setPullLoadEnable(true); xListView.setPullRefreshEnable(true); xListView.setXListViewListener(this); getDuqu(); } private void getDuqu() { //异步任务 AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL(path + NUM); //请求网络 HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //设置什么方式请求 urlConnection.setRequestMethod("GET"); //设置延时 urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); int responseCode = urlConnection.getResponseCode(); //判断请求是否成功 if (responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); String json = LiuDeZhuanHuan(inputStream); Log.i("-------------",json.toString()); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { super.onPostExecute(json); //拿到数据 Gson gson = new Gson(); Bean bean = gson.fromJson(json, Bean.class); List<Bean.DataBean> list01 = bean.getData(); //将数据添加爱集合 list.addAll(list01); setadapter(); xListView.stopLoadMore(); } }; asyncTask.execute(); } //设置适配器 private void setadapter() { Myadapter myadapter = new Myadapter(MainActivity.this, list); xListView.setAdapter(myadapter); //myadapter.notifyDataSetChanged(); } //流的转化 private String LiuDeZhuanHuan(InputStream inputStream) { InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder builder = new StringBuilder(); String string = null; try { while ((string=bufferedReader.readLine())!=null){ builder.append(string); } return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } @Override public void onRefresh() { //下拉加载 NUM--; if (NUM>0){ AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { //请求网络 URL url = new URL(path + NUM); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //设置什么方式请求 urlConnection.setRequestMethod("GET"); //设置访问网络的延时 urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); int responseCode = urlConnection.getResponseCode(); //判断网络请求成功 if (responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); String json = LiuDeZhuanHuan(inputStream); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { super.onPostExecute(json); Gson gson = new Gson(); Bean bean = gson.fromJson(json, Bean.class); List<Bean.DataBean> list02 = bean.getData(); list.addAll(0,list02); setadapter(); xListView.stopRefresh(); } }; asyncTask.execute(); }else { //数据加载完进行提示 Toast.makeText(MainActivity.this,"数据加载完",Toast.LENGTH_LONG).show(); } } //上拉刷新 @Override public void onLoadMore() { NUM++; getDuqu(); }}Myadapter控件package com.example.weikai09d20170911;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by My on 2017/9/11. */public class Myadapter extends BaseAdapter { Context context; List<Bean.DataBean> list; public Myadapter(Context context, List<Bean.DataBean> 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; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { if (position%2==0){ return 0; }else { return 1; } } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type =getItemViewType(i); ViewHolder viewHolder = null; ViewHolder2 viewHolder2 = null; switch(type){ case 1: { if(view == null){ viewHolder= new ViewHolder(); //找到控件 view =View.inflate(context,R.layout.yangshi,null); viewHolder.textview = (TextView)view.findViewById(R.id.textview); view.setTag(viewHolder); }else{ viewHolder= (ViewHolder) view.getTag(); } } break; case 0: { if(view == null){ viewHolder2 = new ViewHolder2(); //找到控件 view =View.inflate(context,R.layout.yangshi02,null); viewHolder2.textview01 = (TextView)view.findViewById(R.id.textview01); viewHolder2.imageview = (ImageView)view.findViewById(R.id.imageview); view.setTag(viewHolder2); }else{ viewHolder2 = (ViewHolder2) view.getTag(); } } break; } switch(type){ case 0: { //为控件赋值 ImageLoader.getInstance().displayImage(list.get(i).getImg(),viewHolder2.imageview); //loadImage(list.get(i).getImg(),viewHolder2.ivIcon2); viewHolder2.textview01.setText(list.get(i).getTitle()); } break; case 1: { //为控件赋值 viewHolder.textview.setText(list.get(i).getTitle()); } break; } return view; } //ViewHolder类 class ViewHolder{ TextView textview; } class ViewHolder2{ TextView textview01; ImageView imageview; }}
阅读全文
0 0
- xlistview的实现
- 实现XlistView的简洁方法PullToRefreshListView
- XListView实现原理
- XlistView正确实现
- 实现Banner,TabLayout,XlistView
- xlistview的使用
- xListView的使用步骤
- Xlistview的滚动控制
- xlistview用到的方法
- xlistview的写法
- XLIstView的使用
- XListView 的配置
- XlistView的使用方法
- XListView的布局
- XlistView的使用
- XListView的使用
- XListView的使用方法
- XListView的使用方法
- 多IP服务器应用可以有效的降低成本
- SVN安装流程
- 如何限制对象在栈或堆中创建对象
- 解决emoji表情的数据库存取问题:Cause: java.sql.SQLException: Incorrect string value
- 关于SUI Mobile中的幻灯片自动轮播时,手动滑动后,不会再轮播的问题
- xlistview的实现
- 推箱子
- 美国站群服务器有利于SEO优化
- caffe优化算法基本原理
- 启动异常解决方法
- 揭秘IPHONE X刷脸认证的技术奥秘
- 习题 7.6 写一个函数,将两个字符串连接。
- Multivariable Calculus 总结(第一部分)
- android webview图片文件上传——上传控件点击无效的解决办法