Xlistview 使用
来源:互联网 发布:非典 真相 知乎 编辑:程序博客网 时间:2024/06/05 21:07
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{
private XListView listView;
private int page=1;//从第一页开始加载;
private int pageSize=15;//每一页加载的数量
private Gson gson=new Gson();
private MyAdapter adapter;
private List<DataTotalBean.DataBean> value =new ArrayList<>();
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what=msg.what;
if(what==1){
String[] datas=(String[])msg.obj;
if(datas!=null&&datas.length>1){
String result=datas[0];
String isadd=datas[1];
boolean isAdd=Boolean.parseBoolean(isadd);
DataTotalBean bean=gson.fromJson(result,DataTotalBean.class);
value=bean.getData();
System.out.println(result);
if(value!=null){
if(!isAdd){//更新数据
value.clear();
}
value.addAll(value);
System.out.println(value.size()+" &&&&&&&& "+result);
adapter.updateData(value);
//数据从网络取回成功,停止加载进度条;
listView.stopLoadMore();
listView.stopRefresh();
}
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(XListView)findViewById(R.id.mylist);
listView.setXListViewListener(this);
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
adapter=new MyAdapter(MainActivity.this);
listView.setAdapter(adapter);
getDataFromHttp(false,"GET");
}
//从网络获取数据
private void getDataFromHttp(final boolean isadd , final String requestMethod){
new Thread(){
@Override
public void run() {
super.run();
try {
String path=" ";
//value feiqi
String value="key=59a7a07262e92d09a63ec1a23beb1a2c&area="+ URLEncoder.encode("北京","utf-8")+"&page="+page+"&pagesize="+pageSize;
if(requestMethod.equals("GET")){
path=path+"?"+value;
}
URL url=new URL(path);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod(requestMethod);
if(requestMethod.equals("POST")){
connection.setDoOutput(true);
OutputStream os=connection.getOutputStream();
os.write(value.getBytes());
}
int code=connection.getResponseCode();
System.out.println(code+" ******************");
if(code==HttpURLConnection.HTTP_OK){
InputStream inputStream=connection.getInputStream();
String str="";
String result="";
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
while((str=reader.readLine())!=null){
result+=str;
}
Message msg=Message.obtain();
msg.obj=new String[]{result,isadd+""};
msg.what=1;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
@Override
public void onRefresh() {
page=1;
getDataFromHttp(false,"GET");
}
@Override
public void onLoadMore() {
page++;
getDataFromHttp(true,"GET");
}
}
适配器
public class MyAdapter extends BaseAdapter {
private List<DataTotalBean.DataBean> value = new ArrayList<>();
private Context context;
private ImageLoader loader;
private DisplayImageOptions options;
public MyAdapter(Context context) {
this.context = context;
loader=ImageLoader.getInstance();
ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(context);
loader.init(configuration);
options=new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.displayer(new FadeInBitmapDisplayer(20))
.build();
}
//追加数据
public void addData(List<DataTotalBean.DataBean> value){
this.value.addAll(value);
notifyDataSetChanged();
}
public void updateData(List<DataTotalBean.DataBean> value){
this.value.clear();
addData(value);
}
@Override
public int getCount() {
return value.size();
}
@Override
public Object getItem(int position) {
return value.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if (convertView == null) {
convertView = View.inflate(context, R.layout.item, null);
holder=new ViewHolder(convertView);
convertView.setTag(holder);
}else{
holder=(ViewHolder)convertView.getTag();
}
holder.item_name.setText(value.get(position).getSource_name());
holder.item_address.setText(value.get(position).getTitle());
List<DataTotalBean.DataBean.ImgUrlBean> imgs=value.get(position).getImg();
if(imgs!=null&&imgs.size()>0){
loader.displayImage(imgs.get(0).url,holder.item_img,options);
}
return convertView;
}
public static class ViewHolder {
public View rootView;
public ImageView item_img;
public TextView item_name;
public TextView item_address;
public ViewHolder(View rootView) {
this.rootView = rootView;
this.item_img = (ImageView) rootView.findViewById(R.id.item_img);
this.item_name = (TextView) rootView.findViewById(R.id.item_name);
this.item_address = (TextView) rootView.findViewById(R.id.item_address);
}
}
}
- XListView使用
- XListView使用
- Xlistview 使用
- XListView使用
- android XListView使用详解
- xlistview的使用
- XListView 使用笔记
- xListView的使用步骤
- xListView+OKHttp使用(一)
- XLIstView的使用
- XlistView的使用
- XListView的使用
- xListView+OKHttp使用(二)
- xlistview的使用
- xListView的使用
- xListView的简单使用
- XListView简单使用
- Xlistview 简单使用
- div图片水平垂直居中不随滚动条滚动的CSS代码(兼容IE8+)
- 锁、PV操作、进程互斥与同步的实现
- window+python3.6环境下安装numby和pip
- navicat本地oracle连接
- PHP 变量友好化打印输出
- Xlistview 使用
- HDU 5067 状态压缩DP + TSP
- 灾后重建 洛谷p1119
- java内存区域相关(出自《深入理解java虚拟机》)
- 《第一行代码》ListView学习笔记
- 518_h5调a链接必要方法DomStorage
- Codeforces Round #428 (Div. 2) A. Arya and Bran
- 习题 6.6 输出以下的杨辉三角形(要求输出10行)
- 城市列表集成sdk