/** 首先需要导入XListView包 */ public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private int page=1; private int STATE_1 = 1; private int STATE_2 = 2; private int STATE_3; private String urlPath="http://www.oschina.net/action/api/tweet_list?uid=0&pageSize=20&pageIndex="+page; private List<News> datalist=new ArrayList<News>(); private News news=null; private XListView xListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xListView = (XListView) findViewById(R.id.lv_view); xListView.setPullLoadEnable(true); getXmlData(page); xListView.setXListViewListener(this); //XListView的监听事件 xListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { News data = datalist.get(position); String ids = data.getId(); Intent intent = new Intent(MainActivity.this, DesicActivity.class); intent.putExtra("id", ids); startActivity(intent); } }); } //使用了XUtil请求数据XML数据 private void getXmlData(final int page) { HttpUtils httpUtils=new HttpUtils(); httpUtils.send(HttpRequest.HttpMethod.GET, urlPath, new RequestCallBack<String>() { private MyListAdapter adapter; @Override public void onSuccess(ResponseInfo<String> responseInfo) { String str=responseInfo.result; //System.out.println("========="+str+"========="); try { //判断,如果有数据先清空 if (STATE_3 == STATE_1) { datalist .clear(); } //Pull工厂 XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); XmlPullParser parser=factory.newPullParser(); //将字符串转成byte字节流 parser.setInput(new ByteArrayInputStream(str.getBytes()),"utf-8"); //判断类型 int eventType=parser.getEventType(); while (eventType!=XmlPullParser.END_DOCUMENT){ String name=parser.getName(); switch (eventType){ case XmlPullParser.START_DOCUMENT: //datalist=new ArrayList<News>(); break; case XmlPullParser.START_TAG: if("tweet".equals(name)){ news=new News(); } else if("id".equals(name)){ news.setId(parser.nextText()); }else if("portrait".equals(name)){ news.setPortrait(parser.nextText()); }else if("author".equals(name)){ news.setAuthor(parser.nextText()); }else if("body".equals(name)){ news.setBody(parser.nextText()); } break; case XmlPullParser.END_TAG: if(name.equals("tweet")){ datalist.add(news); }break; } eventType=parser.next(); } adapter = new MyListAdapter(MainActivity.this,datalist); xListView.setAdapter(adapter); load(); adapter.notifyDataSetChanged(); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(HttpException e, String s) { } }); } public void load(){ //停止更新 xListView.stopRefresh(); //加载更多 xListView.stopLoadMore(); //更新时间 xListView.setRefreshTime("刚刚"); } //实现方法 @Override public void onRefresh() { STATE_3 = STATE_1;//设置判断 getXmlData(page); } @Override public void onLoadMore() { STATE_3 = STATE_2;//设置判断 getXmlData(page); } } //Adapterpublic class MyListAdapter extends BaseAdapter{ private List<News> datalist; private Context context; private final DisplayImageOptions options; public MyListAdapter(Context context, List<News> datalist) { this.context = context; this.datalist = datalist; //图片加载(图片转换成圆形) ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context)); options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(50)).build(); /* ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));*/ /*options = new DisplayImageOptions.Builder().showImageOnLoading(R.mipmap.ic_launcher).showImageOnFail (R.mipmap.ic_launcher).cacheInMemory(true).cacheOnDisk(true).build();*/ } @Override public int getCount() { return datalist.size(); } @Override public Object getItem(int position) { return datalist.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= LayoutInflater.from(context).inflate(R.layout.list_item,null); holder=new ViewHolder(); holder.athor= (TextView) convertView.findViewById(R.id.tv_name); holder.title= (TextView) convertView.findViewById(R.id.tv_title); holder.imageView= (ImageView) convertView.findViewById(R.id.iv_img); convertView.setTag(holder); } holder= (ViewHolder) convertView.getTag(); ImageLoader.getInstance().displayImage(datalist.get(position).getPortrait(),holder.imageView,options); holder.athor.setText(datalist.get(position).getAuthor()); holder.title.setText(datalist.get(position).getBody()); return convertView; } class ViewHolder{ TextView athor; TextView title; ImageView imageView; } }
XListView上拉加载下拉刷新
最新推荐文章于 2019-01-03 14:28:08 发布