XListView+对条目
来源:互联网 发布:淘宝买全民晒单 编辑:程序博客网 时间:2024/06/04 23:32
package com.bwie.skn.songkenan20170911;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bwie.skn.songkenan20170911.XListView.XListView;import com.bwie.skn.songkenan20170911.bean.JsonBean;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.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private XListView xlv; private List<JsonBean.DataBean> list = new ArrayList<>(); private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 xlv = (XListView) findViewById(R.id.xlv); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); //适配器 myAdapter = new MyAdapter(); xlv.setAdapter(myAdapter); //获取数据 initData(); } //创建适配器 class MyAdapter extends BaseAdapter{ @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 View getView(int i, View view, ViewGroup viewGroup) { ViewHolder0 vh0 = null; ViewHolder1 vh1 = null; int type = getItemViewType(i); if(view==null){ //多条目判断 switch(type){ case 0: vh0 = new ViewHolder0(); view = View.inflate(MainActivity.this,R.layout.lv_viewholder0,null); vh0.iv =(ImageView) view.findViewById(R.id.iv); vh0.tv = (TextView) view.findViewById(R.id.tv); view.setTag(vh0); break; case 1: vh1 = new ViewHolder1(); view = View.inflate(MainActivity.this,R.layout.lv_viewholder1,null); vh1.tv = (TextView) view.findViewById(R.id.tv); view.setTag(vh1); break; } }else{ switch(type){ case 0: vh0 = (ViewHolder0) view.getTag(); break; case 1: vh1 = (ViewHolder1) view.getTag(); break; } } //给控件赋值 switch(type){ case 0: new MyAsyncTaskImage(vh0.iv).execute(list.get(i).getUserImg()); vh0.tv.setText(list.get(i).getTitle()); break; case 1: vh1.tv.setText(list.get(i).getTitle()); break; } return view; } //条目类型数量 @Override public int getViewTypeCount() { return 2; } //条目类型 @Override public int getItemViewType(int position) { if(position%2==0){ return 1; }else{ return 0; } } } //容器 class ViewHolder0{ ImageView iv; TextView tv; } class ViewHolder1{ TextView tv; } //获得数据 private void initData() { new MyAsyncTaskString().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"); } //网络获取数据 class MyAsyncTaskString extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { try { //获得路径 URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //判断是否连接成功 int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer buffer = new StringBuffer(); String str = ""; while ((str=reader.readLine())!=null){ buffer.append(str); } return buffer.toString(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); JsonBean jsonBean = gson.fromJson(s, JsonBean.class); List<JsonBean.DataBean> data = jsonBean.getData(); list.addAll(data); myAdapter.notifyDataSetChanged(); } } class MyAsyncTaskImage extends AsyncTask<String,Void,Bitmap>{ ImageView iv; public MyAsyncTaskImage(ImageView iv) { this.iv = iv; } @Override protected Bitmap doInBackground(String... strings) { try { //获得路径 URL url = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //判断是否连接成功 int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap bitmap) { iv.setImageBitmap(bitmap); } } //关闭 public void onLoad(){ xlv.stopRefresh(); xlv.stopLoadMore(); xlv.setRefreshTime("刚刚"); } /** * 下拉刷新 */ @Override public void onRefresh() { list.clear(); initData(); onLoad(); } /** * 上拉加载 */ @Override public void onLoadMore() { initData(); onLoad(); }}
阅读全文
1 0
- XListView+对条目
- xlistview多条目加载
- XListView之多条目加载
- Xlistview多条目展示
- xlistview 多条目展示
- xlistview加多条目
- XlistView多条目加载
- XListView多条目加载adpter
- XlistView的多条目加载
- banner+xlistview+多条目展示
- Xlistview实现多条目布局
- xlistview的多条目展示
- 有关XListView的多条目展示
- 多条目加载+XlistView刷新加载更多
- 综合:XListView + PullToRefresh +AsyncTask (多条目)
- xlistview刷新加载+Drawlayout+多条目
- 下拉刷新上拉加载,XListView多条目加载,TabPageIndicator
- XListView多条目加载+TabPageIndicator+下拉刷新上拉加载
- 合并两个已排序的数组
- 插入排序
- PlayMaker GUI的Normalized
- servlet过滤器和servlet监听器
- Android ExoPlayer实现网络URL、本地视频播放
- XListView+对条目
- win10家庭版如何修改用户名对应的文件夹的名字(中文该成英文字符)
- ubuntu16.04虚拟机桥接模式无法联网问题解决
- ubuntu 常见的错误 Could not get lock /var/lib/dpkg/lock
- 第二周项目1函数参数传递的三种方式
- shiro 学习
- PHP面向对象之简单工厂模式
- 客户端Socket概述与实例
- 分页池和非分页池的基本概念