package com.diandi.demo.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.TextView;
import com.diandi.demo.CustomApplication;
import com.diandi.demo.R;
import com.diandi.demo.adapter.FeedAdapter;
import com.diandi.demo.config.Constant;
import com.diandi.demo.model.User;
import com.diandi.demo.model.diandi.DianDi;
import com.diandi.demo.util.ImageLoadOptions;
import com.diandi.demo.util.L;
import com.diandi.demo.util.OverridePendingUtil;
import com.diandi.demo.widget.xlist.XListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.util.ArrayList;
import java.util.List;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.listener.FindListener;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public class PersonalActivity extends ActivityBase implements XListView.IXListViewListener, AdapterView.OnItemClickListener, View.OnClickListener {
public static final int EDIT_USER = 1;
private final static String PERSON_LIST = "person_list";
private ImageView personalIcon;
private TextView personalName;
private TextView personalSign;
private ImageView goSettings;
private TextView personalTitle;
private XListView mListView;
private ArrayList<DianDi> mDianDis;
private FeedAdapter mAdapter;
private User mUser;
private int pageNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
findView();
initView();
loadData();
}
void findView() {
setContentView(R.layout.fragment_personal);
personalIcon = (ImageView) findViewById(R.id.personal_icon);
personalName = (TextView) findViewById(R.id.personl_name);
personalSign = (TextView) findViewById(R.id.personl_signature);
goSettings = (ImageView) findViewById(R.id.go_settings);
personalTitle = (TextView) findViewById(R.id.personl_title);
mListView = (XListView) findViewById(R.id.pull_refresh_list_personal);
}
void initView() {
mDianDis = new ArrayList<DianDi>();
mUser = CustomApplication.getInstance().getCurrentDianDi().getAuthor();
updatePersonalInfo(mUser);
if (CustomApplication.getInstance().getCache().getAsObject(PERSON_LIST + mUser.getObjectId()) != null) {
mDianDis = (ArrayList<DianDi>) CustomApplication.getInstance().getCache().getAsObject(PERSON_LIST + mUser.getObjectId());
}
initTopBarForLeft("个人中心");
initMyPublish();
initXListView();
bindEvent();
}
public void onStop() {
super.onStop();
if (mDianDis != null) {
CustomApplication.getInstance().getCache().put(PERSON_LIST + mUser.getObjectId(), mDianDis);
}
}
private void initXListView() {
mListView.setOnItemClickListener(this);
mListView.setPullLoadEnable(false);
mListView.setPullRefreshEnable(true);
mListView.setXListViewListener(this);
mListView.pullRefreshing();
mAdapter = new FeedAdapter(this, mDianDis, FeedAdapter.DIANDI_PERSON);
mListView.setAdapter(mAdapter);
}
private void initMyPublish() {
if (isCurrentUser(mUser)) {
personalTitle.setText("我发表过的");
goSettings.setVisibility(View.INVISIBLE);
User user = BmobUser.getCurrentUser(this, User.class);
updatePersonalInfo(user);
} else {
goSettings.setVisibility(View.GONE);
personalTitle.setText("ta发表过的");
}
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Intent intent = new Intent();
intent.setClass(PersonalActivity.this, CommentActivity.class);
intent.putExtra("data", mDianDis.get(position - 1));
startAnimActivity(intent);
}
@Override
public void onRefresh() {
pageNum = 0;
loadData();
}
@Override
public void onLoadMore() {
loadData();
}
private void refreshLoad() {
if (mListView.getPullLoading()) {
mListView.stopLoadMore();
}
}
private void refreshPull() {
if (mListView.getPullRefreshing()) {
mListView.stopRefresh();
}
}
private void updatePersonalInfo(User user) {
personalName.setText(user.getNick());
personalSign.setText(user.getSignature());
ImageLoader.getInstance().displayImage(user.getAvatar(), personalIcon,
ImageLoadOptions.getOptions(),
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
// TODO Auto-generated method stub
super.onLoadingComplete(imageUri, view, loadedImage);
L.i(TAG, "load personal icon completed.");
}
}
);
}
//判断点击条目的用户是否是当前登录用户
private boolean isCurrentUser(User user) {
if (null != user) {
User cUser = BmobUser.getCurrentUser(mContext, User.class);
if (cUser != null && cUser.getObjectId().equals(user.getObjectId())) {
return true;
}
}
return false;
}
protected void bindEvent() {
// TODO Auto-generated method stub
personalIcon.setOnClickListener(this);
personalSign.setOnClickListener(this);
personalTitle.setOnClickListener(this);
goSettings.setOnClickListener(this);
}
protected void loadData() {
BmobQuery<DianDi> query = new BmobQuery<DianDi>();
query.setLimit(Constant.NUMBERS_PER_PAGE);
query.setSkip(Constant.NUMBERS_PER_PAGE * (pageNum++));
query.order("-createdAt");
query.include("author");
query.addWhereEqualTo("author", mUser);
query.findObjects(this, new FindListener<DianDi>() {
@Override
public void onSuccess(List<DianDi> data) {
if (data.size() != 0 && data.get(data.size() - 1) != null) {
mDianDis.clear();
if (data.size() < Constant.NUMBERS_PER_PAGE) {
// ShowToast("已加载完所有数据~");
}
mDianDis.addAll(data);
mAdapter.notifyDataSetChanged();
} else
{
ShowToast("暂无更多数据~");
pageNum--;
}
refreshPull();
}
@Override
public void onError(int arg0, String msg) {
// TODO Auto-generated method stub
L.i(TAG, "find failed." + msg);
pageNum--;
refreshPull();
}
}
);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.personal_icon:
Intent intent = new Intent(mContext, ProfileActivity.class);
if (!isCurrentUser(mUser)) {
intent.putExtra("from", "add");
intent.putExtra("username", mUser.getUsername());
} else {
intent.putExtra("from", "me");
intent.putExtra("username", mUser.getUsername());
}
startAnimActivity(intent);
break;
case R.id.personl_signature:
case R.id.go_settings:
if (isCurrentUser(mUser)) {
Intent intent2 = new Intent();
intent2.setClass(PersonalActivity.this, ProfileActivity.class);
startActivityForResult(intent2, EDIT_USER);
L.i(TAG, "current user edit...");
}
break;
case R.id.personl_title:
default:
break;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case EDIT_USER:
getCurrentUserInfo();
pageNum = 0;
loadData();
break;
default:
break;
}
}
}
// 查询当前用户具体信息
private void getCurrentUserInfo() {
User user = BmobUser.getCurrentUser(PersonalActivity.this, User.class);
L.i(TAG, "sign:" + user.getSignature());
updatePersonalInfo(user);
ShowToast("更新信息成功。");
}
@Override
public void onBackPressed() {
finish();
OverridePendingUtil.out(this);
}
}