package com.kaixin.android.activity;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.FrameLayout.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import com.kaixin.android.KXActivity;
import com.kaixin.android.R;
import com.kaixin.android.result.AlbumResult;
import com.kaixin.android.result.PhotoDetailResult;
import com.kaixin.android.result.PhotoResult;
import com.kaixin.android.utils.CallService;
import com.kaixin.android.utils.TextUtil;
/**
* 资料照片类
*
* @author gyz
*
*/
public class PhotoActivity extends KXActivity {
private Button mBack;
private TextView mTitle;
private GridView mDisplay;
private TextView mNoDisplay;
private String mUid;// 照片所属的用户ID
private String mName;// 照片所属的用户姓名
private int mAvatar;// 照片所属的用户头像
private ArrayList<AlbumResult> mAlbums;
private List<PhotoDetailResult> mPhotos;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo_activity);
findViewById();
setListener();
init();
}
private void findViewById() {
mBack = (Button) findViewById(R.id.photo_back);
mTitle = (TextView) findViewById(R.id.photo_title);
mDisplay = (GridView) findViewById(R.id.photo_display);
mNoDisplay = (TextView) findViewById(R.id.photo_nodisplay);
}
private void setListener() {
mBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 关闭当前界面
finish();
}
});
mDisplay.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// 传递照片所属用户的ID、姓名、头像以及图片数据到图片列表类
Intent intent = new Intent();
intent.setClass(PhotoActivity.this, PhotoListActivity.class);
intent.putExtra("uid", mUid);
intent.putExtra("name", mName);
intent.putExtra("avatar", mAvatar);
// ID为空时为当前用户
if (mUid == null) {
AlbumResult album = mKXApplication.mMyPhotoResults.get(arg2);
String json = CallService.getPhotoUrl(1, album.getId());
getPhotos(json, false);
intent.putExtra("albumid",
mKXApplication.mMyPhotoResults.get(arg2).getId());
intent.putExtra("result",
(Serializable)mPhotos);
} else {
AlbumResult album = mKXApplication.mFriendPhotoResults.get(mUid).get(arg2);
String json = CallService.getPhotoUrl(1, album.getId());
getPhotos(json, false);
intent.putExtra("albumid",
mKXApplication.mFriendPhotoResults.get(mUid).get(arg2).getId());
intent.putExtra(
"result",(Serializable)mPhotos);
}
startActivity(intent);
}
});
}
private void init() {
// 获取照片所属用户的ID、姓名、头像
mUid = getIntent().getStringExtra("uid");
mName = getIntent().getStringExtra("name");
mAvatar = getIntent().getIntExtra("avatar", -1);
// ID为空时代表为当前用户,根据用户的不同 显示不同的内容
if (mUid == null) {
mBack.setText("我的首页");
mTitle.setText("我的照片");
getPhotos();
mDisplay.setAdapter(new PhotoAdapter(mKXApplication.mMyPhotoResults));
} else {
mBack.setText(mName);
mTitle.setText(mName + "的照片");
getPhotos();
mDisplay.setAdapter(new PhotoAdapter(
mKXApplication.mFriendPhotoResults.get(mUid)));
}
}
/**
* 获取照片数据
*/
private void getPhotos() {
// ID为空时为当前用户数据,否则根据ID获取数据
if (mUid == null) {
if (mKXApplication.mMyPhotoResults.isEmpty()) {
String json = CallService.getAlbums(""); // getmAlbums();
getAlbums(json, false, "");
}
}else {
if (!mKXApplication.mFriendPhotoResults.containsKey(mUid)) {
String json = CallService.getAlbums(mUid); // getmAlbums();
getAlbums(json, true, mUid);
}
}
}
private void getAlbums(String json, boolean isFriend, String uid) {
try {
JSONObject object = new JSONObject(json);
JSONArray albumArray = object.getJSONArray(
"data");
mAlbums = new ArrayList<AlbumResult>();
for (int j = 0; j < albumArray.length(); j++) {
AlbumResult album = new AlbumResult();
album.setId(albumArray.getJSONObject(j).getInt("id"));
album.setEmail(albumArray.getJSONObject(j).getString("email"));
album.setName(albumArray.getJSONObject(j).getString("name"));
album.setImage(albumArray.getJSONObject(j).getString("image"));
mAlbums.add(album);
}
if (isFriend) {
mKXApplication.mFriendPhotoResults.put(uid, mAlbums);
} else {
mKXApplication.mMyPhotoResults = mAlbums;
}
} catch (JSONException e) {
e.printStackTrace();
mDisplay.setVisibility(View.GONE);
mNoDisplay.setVisibility(View.VISIBLE);
}
}
/**
* 解析图片数据
*
* @param json
*/
private void getPhotos(String json, boolean isFriend) {
try {
JSONObject object = new JSONObject(json);
JSONArray albumArray = object.getJSONArray(
"data");
mPhotos = new ArrayList<PhotoDetailResult>();
for (int j = 0; j < albumArray.length(); j++) {
PhotoDetailResult photoDetailResult = new PhotoDetailResult();
photoDetailResult.setId(albumArray.getJSONObject(j).getInt("id"));
photoDetailResult.setComment_count(albumArray.getJSONObject(j).getInt("comment_count"));
photoDetailResult.setAlbum_id(albumArray.getJSONObject(j).getInt("album_id"));
photoDetailResult.setLike_count(albumArray.getJSONObject(j).getInt("like_count"));
photoDetailResult.setTime(albumArray.getJSONObject(j).getString("time"));
photoDetailResult.setPhoto_filename(albumArray.getJSONObject(j).getString("photo_filename"));
mPhotos.add(photoDetailResult);
}
} catch (JSONException e) {
e.printStackTrace();
mDisplay.setVisibility(View.GONE);
mNoDisplay.setVisibility(View.VISIBLE);
}
}
private class PhotoAdapter extends BaseAdapter {
private List<AlbumResult> mResults = new ArrayList<AlbumResult>();
public PhotoAdapter(List<AlbumResult> results) {
if (results != null) {
mResults = results;
}
}
public int getCount() {
return mResults.size();
}
public Object getItem(int position) {
return mResults.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(PhotoActivity.this).inflate(
R.layout.photo_activity_item, null);
holder = new ViewHolder();
holder.image = (ImageView) convertView
.findViewById(R.id.photo_item_img);
int padding = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 40, PhotoActivity.this
.getResources().getDisplayMetrics());
LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.width = (mScreenWidth - padding) / 3;
params.height = (mScreenWidth - padding) / 3;
holder.image.setLayoutParams(params);
holder.title = (TextView) convertView
.findViewById(R.id.photo_item_title);
holder.time = (TextView) convertView
.findViewById(R.id.photo_item_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
AlbumResult result = mResults.get(position);
/*if (result.getType() == 0) {
holder.image.setImageBitmap(mKXApplication.getAvatar(result
.getImage()));
} else {
holder.image.setImageBitmap(mKXApplication.getPhoto(result
.getImage()));
}*/
holder.image.setImageBitmap(CallService.getPhoto(result.getId(), result.getImage(), false, mUid));
holder.title.setText(result.getName());
holder.time.setText("");
return convertView;
}
class ViewHolder {
ImageView image;
TextView title;
TextView time;
}
}
}