Xstream

///Xstream解析xml    加下拉刷新上拉加载

import java.text.SimpleDateFormat;
import java.util.Date;

import com.bwie.adapter.MyAdapter;
import com.bwie.bean_main.Datas;
import com.bwie.xlistview.XListView;
import com.bwie.xlistview.XListView.IXListViewListener;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.thoughtworks.xstream.XStream;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;


public class MainActivity extends Activity implements IXListViewListener{
    String url="http://www.oschina.net/action/api/tweet_list".trim();
    XListView xListView;
    int index=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取控件ID
        xListView=(XListView) findViewById(R.id.xlistview);
        //xlistview的监听方法
        xListView.setXListViewListener(this);
        xListView.setPullLoadEnable(true);
        xListView.setPullRefreshEnable(true);
        getXML(1,10);
    }
   
    public void getXML(int a,int b){
     //httputils联网请求数据
     HttpUtils httpUtils=new HttpUtils();
     RequestParams params=new RequestParams();
     params.addBodyParameter("uid", 0+"");
     params.addBodyParameter("pageIndex", a+"");
     params.addBodyParameter("pageSize", b+"");
     httpUtils.send(HttpMethod.POST, url, params,new RequestCallBack<String>() {

   @Override
   public void onFailure(HttpException arg0, String arg1) {
    // TODO Auto-generated method stub
    
   }

   @Override
   public void onSuccess(ResponseInfo<String> arg0) {
    // TODO Auto-generated method stub
    //xstream解析xml
    XStream xStream=new XStream();
    xStream.processAnnotations(Datas.class);
    final Datas fromXML = (Datas) xStream.fromXML(arg0.result);
    //添加自定义适配器baseadapter
    MyAdapter adapter=new MyAdapter(getApplicationContext(), fromXML.getTweets().getTweet());
    xListView.setAdapter(adapter);
    //监听item
    xListView.setOnItemClickListener(new OnItemClickListener() {
   
     @Override
     public void onItemClick(AdapterView<?> parent, View view,
       int position, long id) {
      // TODO Auto-generated method stub
      Intent intent=new Intent(MainActivity.this,ShowActivity.class);
      intent.putExtra("list", fromXML.getTweets().getTweet().get(position-1));
      startActivity(intent);
     }
    });
    Log.i("aaa", fromXML.toString());
   }
  });
    }
    //上拉加载
 @Override
 public void onRefresh() {
  // TODO Auto-generated method stub
  getXML(1,10);
  onLoad();
 }
 //下拉刷新
 @Override
 public void onLoadMore() {
  // TODO Auto-generated method stub
  index++;
  getXML(index,10);
  onLoad();
 }
 //时间
 public void onLoad() {

        xListView.stopRefresh();
        xListView.stopLoadMore();     
      
        // 设置日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        // 获取当前系统时间
        String nowTime = df.format(new Date(System.currentTimeMillis()));
        // 释放时提示正在刷新时的当前时间
        xListView.setRefreshTime(nowTime);
    }
}


主类的适配器MyAdapter


import java.util.List;

import com.bwie.bean_main.Tweet;
import com.bwie.round.RoundImageView;
import com.bwie.test.R;
import com.lidroid.xutils.BitmapUtils;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
//自定义适配器
public class MyAdapter extends BaseAdapter {
 public final static int TYPE1=0;
 public final static int TYPE2=1;
    Context context;
    List<Tweet> list;
    //构造方法
 public MyAdapter(Context context, List<Tweet> list) {
  super();
  this.context = context;
  this.list = list;
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return list.size();
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return list.get(position);
 }

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return position;
 }
 //加载布局
    @Override
    public int getItemViewType(int position) {
     // TODO Auto-generated method stub
     if(!list.get(position).getImgSmall().equals("")){
      return TYPE1;
     }else{
      return TYPE2;
     }
     
    }
    //返回布局数量
    @Override
    public int getViewTypeCount() {
     // TODO Auto-generated method stub
     return 2;
    }
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  ViewHolder viewHolder;
  ViewHolder1 viewHolder1;
  //加载布局
  int type=getItemViewType(position);
  switch (type) {
  case TYPE1:
   if(convertView==null){
    viewHolder=new ViewHolder();
    convertView=LayoutInflater.from(context).inflate(R.layout.list_view01, null);
    viewHolder.imageView1=(RoundImageView) convertView.findViewById(R.id.image_user);
    viewHolder.imageView2=(ImageView) convertView.findViewById(R.id.image_show);
    viewHolder.textView1=(TextView) convertView.findViewById(R.id.text_editor);
    viewHolder.textView2=(TextView) convertView.findViewById(R.id.text_con);
    convertView.setTag(viewHolder);
   }else{
     viewHolder=(ViewHolder) convertView.getTag();
   }
    ImageLoader imageLoader1=ImageLoader.getInstance();
       imageLoader1.init(ImageLoaderConfiguration.createDefault(context));
    BitmapUtils bitmapUtils1=new BitmapUtils(context);
    imageLoader1.displayImage(list.get(position).getPortrait(),viewHolder.imageView1);
    bitmapUtils1.display(viewHolder.imageView2, list.get(position).getImgSmall());
    Log.i("ccc", list.get(position).getImgSmall());
    viewHolder.textView1.setText(list.get(position).getAuthor());
    viewHolder.textView2.setText(list.get(position).getBody());
   break;
   
  case TYPE2:
   if(convertView==null){
     viewHolder1=new ViewHolder1();
     convertView=LayoutInflater.from(context).inflate(R.layout.list_view02, null);
     viewHolder1.imageView1=(RoundImageView) convertView.findViewById(R.id.image_user1);
    
     viewHolder1.textView1=(TextView) convertView.findViewById(R.id.text_editor1);
     viewHolder1.textView2=(TextView) convertView.findViewById(R.id.text_con1);
     convertView.setTag(viewHolder1);
    }else{
     viewHolder1=(ViewHolder1) convertView.getTag();
    }
        ImageLoader imageLoader=ImageLoader.getInstance();
        imageLoader.init(ImageLoaderConfiguration.createDefault(context));
//     BitmapUtils bitmapUtils1=new BitmapUtils(context);
     imageLoader.displayImage(list.get(position).getPortrait(),viewHolder1.imageView1);
     viewHolder1.textView1.setText(list.get(position).getAuthor());
     viewHolder1.textView2.setText(list.get(position).getBody());
   break;
  }
  return convertView;
 }
 //自定义viewholder
   class ViewHolder{
    ImageView imageView2;
    RoundImageView imageView1;
    TextView textView1,textView2;
   }
    class ViewHolder1{
     RoundImageView imageView1;
      TextView textView1,textView2;
   }
}



详情界面ShowActivity

package com.bwie.test;

import com.bwie.bean_main.Tweet;
import com.bwie.bean_show.Test;
import com.bwie.bean_show.Tweet_show;
import com.bwie.round.RoundImageView;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.thoughtworks.xstream.XStream;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
//详情页面
public class ShowActivity extends Activity {
 String url="http://www.oschina.net/action/api/tweet_detail";
 String id;
 ImageView imageView1,imageView2;
 RoundImageView imageView;
 TextView textView1,textView2;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_show);
  
  imageView=(RoundImageView) findViewById(R.id.image);
  imageView2=(ImageView) findViewById(R.id.image_02);
  textView1=(TextView) findViewById(R.id.text_au);
  textView2=(TextView) findViewById(R.id.text_down);
  Intent intent = getIntent();
  Tweet tweet=(Tweet) intent.getSerializableExtra("list");
  id=tweet.getId();
  getShow(id);
 }
     public void getShow(String id){
      //httputils联网请求xml
    HttpUtils httpUtils=new HttpUtils();
    RequestParams params=new RequestParams();
    params.addBodyParameter("id", id);
   
    httpUtils.send(HttpMethod.POST, url, params,new RequestCallBack<String>() {

   @Override
   public void onFailure(HttpException arg0, String arg1) {
    // TODO Auto-generated method stub
    
   }

   @Override
   public void onSuccess(ResponseInfo<String> arg0) {
    // TODO Auto-generated method stub
    //xstream解析
    XStream xStream=new XStream();
    xStream.processAnnotations(Test.class);
    final Test fromXML = (Test) xStream.fromXML(arg0.result);
    Log.i("aaa", fromXML.getTweet().toString());
    runOnUiThread(new Runnable() {
     
     @Override
     public void run() {
      // TODO Auto-generated method stub
       ImageLoader imageLoader1=ImageLoader.getInstance();
          imageLoader1.init(ImageLoaderConfiguration.createDefault(getApplicationContext()));
//       BitmapUtils bitmapUtils1=new BitmapUtils(context);
       imageLoader1.displayImage(fromXML.getTweet().getPortrait(),imageView);
      BitmapUtils bitmapUtils=new BitmapUtils(getApplicationContext());
//      
//      bitmapUtils.display(imageView1, fromXML.getTweet().getPortrait());
      textView1.setText(fromXML.getTweet().getAuthor());
      textView2.setText(fromXML.getTweet().getBody());
      //判断图片加载
      if(!fromXML.getTweet().getImgBig().equals("")){
       bitmapUtils.display(imageView2, fromXML.getTweet().getImgBig());
      }else{
       imageView2.setVisibility(View.INVISIBLE);
      }
     }
    });
   }
  });
   }
  
}


自定义圆形图片RoundImageView


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;

import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundImageView extends ImageView {
 //生成三个构造方法
    public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public RoundImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public RoundImageView(Context context) {
        super(context);
    }
    //重写OnDraw方法
    @Override
    protected void onDraw(Canvas canvas) {
        //获得系统的图片
        Drawable drawable=getDrawable();
        //如果是空   那么返回空
        if (drawable==null) {
            return;
        }
        //如果宽度和高度为0那么无效果图不显示
        if (getWidth()==0||getHeight()==0) {
            return;
        }
        //将drawable图片转化成BitMap类型
        Bitmap bitmap=((BitmapDrawable) drawable).getBitmap();
        if (bitmap==null) {
            return;
        }
        //从一个drawable对象复制出来一个bitmap
        //设置图片背景为透明
        Bitmap bitmap1=bitmap.copy(Bitmap.Config.ARGB_8888, true);
        int w=getWidth();
        Bitmap roundbitmap= getCroppedBitmap(bitmap1, w);//调用方法   返回的是一个Bitmap
        canvas.drawBitmap(roundbitmap, 0,0, null);//实现画一个圆图片
    }
    //返回的是一张图片
    public static Bitmap getCroppedBitmap(Bitmap bmp, int radius){
        //定义图片为空
        Bitmap sbmp;
        if (bmp.getWidth()!=radius||bmp.getHeight()!=radius)
            sbmp=Bitmap.createScaledBitmap(bmp, radius, radius, false);
        else
            sbmp=bmp;
            //将drawable类型的图片转化成bitmap
            Bitmap output=Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Config.ARGB_8888);
            //展示在画布上
            Canvas canvas=new Canvas(output);
            //定义画笔
            final Paint paint=new Paint();
            final Rect rect=new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight());
            paint.setAntiAlias(true);
            paint.setFilterBitmap(true);
            paint.setDither(true);
            //画圆  叠加图片
            canvas.drawCircle(sbmp.getWidth()/2+0.7f, sbmp.getHeight()/2+0.7f, sbmp.getWidth()/2+0.1f, paint);
            paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
            canvas.drawBitmap(sbmp, rect, rect, paint);
            return output;
        }

}


bean类  

Tweet

public class Tweet implements Serializable{
 
 private String id;
 private String portrait;
 private String author;
 private String authorid;
 private String body;
 private String attach;
 private String appclient;
 private String commentCount;
 private String pubDate;
 private String imgSmall;
 private String imgBig;
 private String likeCount;
 private String isLike;
 private String likeList;

}


Tweets

import com.thoughtworks.xstream.annotations.XStreamImplicit;

public class Tweets implements Serializable{
 @XStreamImplicit(itemFieldName="tweet")
   private List<Tweet> tweet;

}


Datas

import com.thoughtworks.xstream.annotations.XStreamAlias;
//注解
//封装类
@XStreamAlias("oschina")
public class Datas implements Serializable{
 private String tweetCount;
 private String pagesize;
 @XStreamAlias("tweets")
 private Tweets tweets;

}


bean_show

Tweet_show

public class Tweet_show implements Serializable{

  private String id;
  private String portrait;
  private String author;
  private String authorid;
  private String body;
  private String attach;
  private String appclient;
  private String commentCount;
  private String pubDate;
  private String imgSmall;
  private String imgBig;
  private String likeCount;
  private String isLike;
  private String likeList;

}

Test

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("oschina")
public class Test {
 
 private Tweet_show tweet;

}


布局  

activity_show

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
  
    <com.bwie.round.RoundImageView
        android:id="@+id/image"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="18dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/text_au"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/image"
        android:layout_marginLeft="27dp"
        android:layout_toRightOf="@+id/image"
        android:text="TextView" />

    <TextView
        android:id="@+id/text_down"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/image"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/image"
        android:text="TextView" />

    <ImageView
        android:id="@+id/image_02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/text_down"
        android:layout_below="@+id/text_down"
        android:layout_marginTop="46dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>

list_view01

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.bwie.round.RoundImageView
        android:id="@+id/image_user"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="15dp"
        android:src="@drawable/ic_launcher" />
    <TextView
        android:id="@+id/text_editor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/image_user"
        android:layout_marginLeft="19dp"
        android:layout_toRightOf="@+id/image_user"
        android:textColor="#000"
        android:textSize="12sp"
        android:text="TextView" />

    <TextView
        android:id="@+id/text_con"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/image_user"
        android:layout_alignLeft="@+id/text_editor"
        android:textColor="#000"
        android:textSize="12sp"
        android:text="TextView" />

    <ImageView
        android:id="@+id/image_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/text_con"
        android:layout_below="@+id/text_con"
        android:layout_marginTop="16dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>


list_view02

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.bwie.round.RoundImageView
        android:id="@+id/image_user1"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="21dp"
        android:layout_marginTop="15dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/text_editor1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/image_user1"
        android:layout_marginLeft="19dp"
        android:layout_toRightOf="@+id/image_user1"
        android:textColor="#000"
        android:textSize="12sp"
        android:text="TextView" />

    <TextView
        android:id="@+id/text_con1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/image_user1"
        android:layout_alignLeft="@+id/text_editor1"
        android:layout_alignParentRight="true"
       android:textColor="#000"
        android:textSize="12sp"
        android:text="TextView" />

</RelativeLayout>


strings文件添加

<string name="xlistview_header_hint_normal">下拉刷新</string>
    <string name="xlistview_header_hint_ready">松开刷新数据</string>
    <string name="xlistview_header_hint_loading">正在加载...</string>
    <string name="xlistview_header_last_time">上次更新时间:</string>
    <string name="xlistview_footer_hint_normal">查看更多</string>
    <string name="xlistview_footer_hint_ready">松开载入更多</string>



//切记要加联网权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值