package com.kaixin.android.activity;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.kaixin.android.KXActivity;
import com.kaixin.android.R;
import com.kaixin.android.result.Diary;
import com.kaixin.android.result.DiaryResult;
import com.kaixin.android.utils.ActivityForResultUtil;
import com.kaixin.android.utils.CallService;
import com.kaixin.android.utils.TextUtil;
/**
* 资料日记类
*
* @author gyz
*
*/
public class DiaryActivity extends KXActivity {
private Button mBack;
private TextView mTitle;
private Button mRefresh;
private Button mWriteMessage;
private ListView mDisplay;
private TextView mNoDisplay;
private DiaryAdapter mAdapter;
private String mUid;// 当前日记所属的用户ID
private String mName;// 当前日记所属的用户姓名
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.diary_activity);
findViewById();
setListener();
try {
init();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void findViewById() {
mBack = (Button) findViewById(R.id.diary_back);
mTitle = (TextView) findViewById(R.id.diary_title);
mRefresh = (Button) findViewById(R.id.diary_refresh);
mWriteMessage = (Button) findViewById(R.id.diary_write_message);
mDisplay = (ListView) findViewById(R.id.diary_display);
mNoDisplay = (TextView) findViewById(R.id.diary_nodisplay);
}
private void setListener() {
mBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 关闭当前界面
finish();
}
});
mRefresh.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 暂时不做任何操作
}
});
mWriteMessage.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 跳转到写日记界面
startActivityForResult(new Intent(DiaryActivity.this,
WriteDiaryActivity.class),
ActivityForResultUtil.REQUESTCODE_WRITEDIARY);
}
});
}
private void init() throws JSONException {
// 获取当前日记所属用户的ID和姓名
mUid = getIntent().getStringExtra("uid");
mName = getIntent().getStringExtra("name");
// ID如果为空则代表为当前用户,否则为其他用户
if (mUid == null) {
mBack.setText("我的首页");
mTitle.setText("我的日记");
// 当前用户时可显示进行写日记
mWriteMessage.setVisibility(View.VISIBLE);
// 获取日记数据
getDiary();
// 初始化适配器
mAdapter = new DiaryAdapter(mKXApplication.mMyDiaryResults);
// 添加适配器
mDisplay.setAdapter(mAdapter);
} else {
mBack.setText(mName);
mTitle.setText(mName + "的日记");
// 非当前用户隐藏写日记
mWriteMessage.setVisibility(View.GONE);
// 获取日记数据
getDiary();
// 初始化适配器
mAdapter = new DiaryAdapter(
mKXApplication.mFriendDiaryResults.get(mUid));
// 添加适配器
mDisplay.setAdapter(mAdapter);
}
}
/**
* 获取用户的状态
*/
private List<Diary> getDiaries(String uid) {
String json;
List<Diary> results = null;
try {
json = CallService.getDiaries(uid);
JSONObject object = new JSONObject(json);
JSONArray array = object.getJSONArray(
"data");
Diary result = null;
results = new ArrayList<Diary>();
for (int i = 0; i < array.length(); i++) {
result = new Diary();
result.setId(array.getJSONObject(i).getInt("id"));
result.setTitle(array.getJSONObject(i).getString("title"));
result.setUsername(array.getJSONObject(i).getString("username"));
result.setFilename(array.getJSONObject(i).getString("filename"));
result.setTime(array.getJSONObject(i).getString("time"));
result.setContent(array.getJSONObject(i).getString("content"));
result.setComment_count(array.getJSONObject(i).getInt("comment_count"));
result.setLike_count(array.getJSONObject(i).getInt("like_count"));
results.add(result);
}
} catch (JSONException e) {
e.printStackTrace();
mDisplay.setVisibility(View.GONE);
mNoDisplay.setVisibility(View.VISIBLE);
}
return results;
}
/**
* 根据用户的ID获取用户的日记数据
*/
private void getDiary() throws JSONException {
if (mUid == null) {
if (mKXApplication.mMyDiaryResults.isEmpty()) {
mKXApplication.mMyDiaryResults = getDiaries("");
}
} else {
if (!mKXApplication.mFriendDiaryResults.containsKey(mUid)) {
mKXApplication.mFriendDiaryResults.put(mUid, getDiaries(mUid));
}
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断是否写日记时已经发布日记,如果发布则更新界面
if (resultCode == RESULT_OK) {
mAdapter.notifyDataSetChanged();
}
}
private class DiaryAdapter extends BaseAdapter {
private List<Diary> mResults;
public DiaryAdapter(List<Diary> results) {
if (results == null) {
mResults = new ArrayList<Diary>();
} else {
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(final int position, View convertView,
ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(DiaryActivity.this).inflate(
R.layout.diary_activity_item, null);
holder = new ViewHolder();
holder.title = (TextView) convertView
.findViewById(R.id.diary_item_title);
holder.content = (TextView) convertView
.findViewById(R.id.diary_item_content);
holder.time = (TextView) convertView
.findViewById(R.id.diary_item_time);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Diary result = mResults.get(position);
holder.title.setText(result.getTitle());
holder.content.setText(new TextUtil(mKXApplication).replace(result
.getContent()));
holder.time.setText(result.getTime());
convertView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//跳转到日记详情界面,并传递用户的ID、姓名和日记的具体内容
Intent intent = new Intent();
intent.setClass(DiaryActivity.this,
DiaryDetailActivity.class);
intent.putExtra("uid", mUid);
intent.putExtra("name", mName);
intent.putExtra("result", (Serializable)mResults.get(position));
startActivity(intent);
}
});
return convertView;
}
class ViewHolder {
TextView title;
TextView content;
TextView time;
}
}
}