//這個是SAX解析的所有
public class XMLContentHandler extends DefaultHandler {
private boolean IsDisplayNameTag =false;
private boolean IsAvatarTag =false;
private boolean IsReputationTotalTag =false;
private boolean IsUserTag =false;
private String DisplayName="DisplayName";
private String Avatar="Avatar";
private String ReputationTotal="ReputationTotal";
private Users users ;
private List<Users> list;
public List<Users> getUsers() {
return list;
}
//打開xml文檔的回調函數
@Override
public void startDocument() throws SAXException{
//這裏做list的初始化工作
Log.e("+++++++++>1","1");
list =new ArrayList<Users>();
}
//一旦發現元素開始標記就回調此函數
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (localName.equals("User")) {
users =new Users();
IsUserTag =true;
}
if (localName.equals(DisplayName)) {
IsDisplayNameTag=true;
}else if (localName.equals(Avatar)) {
IsAvatarTag =true;
}else if (localName.equals(ReputationTotal)) {
IsReputationTotalTag =true;
}
}
//一發現元素值或屬性值就回調此函數
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String data =new String(ch,start,length);
if (IsDisplayNameTag) {
users.setDisplayName(data);
}else if (IsAvatarTag) {
users.setAvatar(data);
}else if (IsReputationTotalTag) {
users.setReputationTotal(data);
// Log.i("uuuuuuuuuuuu3",data);
}else {
}
}
//一旦發現元素結束標記就回調此函數
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName.equals("User")) {
IsUserTag=false;
list.add(users);
}
if (localName.equals(DisplayName)) {
IsDisplayNameTag =false;
}else if (localName.equals(Avatar)) {
IsAvatarTag =false;
}else if (localName.equals(ReputationTotal)) {
IsReputationTotalTag =false;
}
}
//關閉xml文檔的回調函數
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
Log.e("+++++++++>5","5");
super.endDocument();
}
}
// 解析的標籤
* User DisplayName Avatar ReputationTotal需要解析的標籤
* */
public class Users {
private String User;
private String DisplayName;
private String Avatar;
private String ReputationTotal;
public String getUser() {
return User;
}
public void setUser(String user) {
User = user;
}
public String getDisplayName() {
return DisplayName;
}
public void setDisplayName(String displayName) {
DisplayName = displayName;
}
public String getAvatar() {
return Avatar;
}
public void setAvatar(String avatar) {
Avatar = avatar;
}
public String getReputationTotal() {
return ReputationTotal;
}
public void setReputationTotal(String reputationTotal) {
ReputationTotal = reputationTotal;
}
}
/**自定義的MyAdapter 繼承BaseAdapter
*最下面是一個ASYNCTACK的異步刷新
*
*/
public class MyAdapter extends BaseAdapter {
private LayoutInflater inflater;
private List<Users> items;
public MyAdapter(Context context,List<Users> it){
inflater =LayoutInflater.from(context);
items =it;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout layout =(LinearLayout) inflater.inflate(R.layout.listone, null);
Users user =items.get(position);
TextView txtname =(TextView) layout.findViewById(R.id.txtup);
txtname.setTextColor(Color.BLACK);
txtname.setTextSize(20);
txtname.setText(user.getDisplayName());
TextView txtrep = (TextView) layout.findViewById(R.id.txtdown);
txtname.setTextColor(Color.BLACK);
txtrep.setTextSize(10);
txtrep.setText(user.getReputationTotal());
ImageView img =(ImageView) layout.findViewById(R.id.img01);
String image =user.getAvatar();
img.setTag(image);
new AsyncLoader().execute(img);
img.setDrawingCacheEnabled(true);
return layout;
}
//繼承於AsyncTask 刷新ImageView,未實現圖片下載到SD卡的功能;
class AsyncLoader extends AsyncTask <ImageView, Void, Bitmap>{
private ImageView gView;
protected Bitmap doInBackground(ImageView... views) {
Bitmap bmp = null;
ImageView view = views[0];
// 根據iconUrl獲取圖片並渲染,iconUrl的url放在了view的tag中。
if (view.getTag() != null) {
try {
URL url = new URL(view.getTag().toString());
GetImage image =new GetImage();
bmp =image.getImage(url);
} catch (Exception e) {
Log.v("img", e.getMessage());
return null;
}
}
this.gView = view;
return bmp;
}
protected void onPostExecute(Bitmap bm) {
if (bm != null) {
this.gView.setImageBitmap(bm);
this.gView = null;
}
}
}
}