/**
*
*/
package com.hupu.games.activity;
import java.util.LinkedList;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.Selection;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.hupu.games.R;
import com.hupu.games.adapter.ReplyListAdapter;
import com.hupu.games.common.HuPuRes;
import com.hupu.games.common.SharedPreferencesMgr;
import com.hupu.games.data.ReplyRespEntity;
import com.hupu.games.data.game.quiz.QuizCommitResp;
import com.hupu.games.data.news.NewsLightEntity;
import com.hupu.games.view.PinnedHeaderXListView;
import com.hupu.games.view.PinnedHeaderXListView.IXListViewListener;
import com.hupu.http.HupuHttpHandler;
/**
* @author panyongjun 上墙榜 需要lid和gid
*/
public class ReplyListActivity extends HupuBaseActivity {
PinnedHeaderXListView mListView;
ReplyListAdapter mAdapter;
Intent in;
int reqMethodId = HuPuRes.REQ_METHOD_GET_REPLY;
boolean isMore = true;
LayoutInflater inflater;
private TextView newsTitle, newsTime, newsOrigin;
private EditText commitContent;
InputMethodManager inputMethodManager;
View popView;
RelativeLayout commitLayout;
ImageView commitImg;
ImageButton sendImg;
long replyId;
boolean isTouch = false;
String tag;
String hid;
boolean haveHid = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inflater = getLayoutInflater();
inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
setContentView(R.layout.layout_reply_list);
in = getIntent();
if (in.getStringExtra("hid") != null) {
hid = in.getStringExtra("hid");
haveHid = true;
reqMethodId = HuPuRes.REQ_METHOD_GET_LINK_REPLY;
} else
haveHid = false;
getReplyList(true);
mListView = (PinnedHeaderXListView) findViewById(R.id.list_player);
mListView.setPullLoadEnable(true, false);
// 默认关闭底部 没有评论了的提示
mListView.mFooterView.findViewById(R.id.xlistview_footer_text)
.setVisibility(View.GONE);
mListView.setXListViewListener(new pullListener());
commitLayout = (RelativeLayout) findViewById(R.id.commit_layout);
commitImg = (ImageView) findViewById(R.id.to_reply_img);
View mView = inflater.inflate(R.layout.item_add_replay_top, null);
newsTitle = (TextView) mView.findViewById(R.id.news_title);
newsTime = (TextView) mView.findViewById(R.id.news_time);
newsOrigin = (TextView) mView.findViewById(R.id.news_origin);
if (!haveHid) {
tag = in.getStringExtra("tag");
newsTime.setText(in.getStringExtra("time"));
newsOrigin.setText(in.getStringExtra("origin"));
} else {
mView.findViewById(R.id.news_info).setVisibility(View.GONE);
}
newsTitle.setText(in.getStringExtra("title"));
mListView.addHeaderView(mView);
sendImg = (ImageButton) findViewById(R.id.commit_reply);
setOnClickListener(R.id.btn_back);
setOnClickListener(R.id.commit_reply);
setOnClickListener(R.id.to_reply_img);
setOnClickListener(R.id.close_reply);
setOnClickListener(R.id.commit_layout_bg);
commitContent = (EditText) findViewById(R.id.reply_text_content);
/*
* 监控评论的hint显示
*/
commitContent.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (!hasFocus) {
commitContent.setHint(R.string.reply_hint_text);
}
}
});
commitContent.addTextChangedListener(mTextWatcher);
}
/**
* 输入监控
*/
private TextWatcher mTextWatcher = new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
sendImg.setBackgroundResource(s.length() > 0 ? R.drawable.btn_reply_commit
: R.drawable.un_send_btn);
sendImg.setEnabled(s.length() > 0 ? true : false);
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
sendImg.setBackgroundResource(s.length() > 0 ? R.drawable.btn_reply_commit
: R.drawable.un_send_btn);
sendImg.setEnabled(s.length() > 0 ? true : false);
}
};
/** 设置listview 上拉和下拉的监听 */
class pullListener implements IXListViewListener {
@Override
public void onRefresh() {
// 加载最新评论数据
reqMethodId = haveHid ? HuPuRes.REQ_METHOD_GET_LINK_REPLY
: HuPuRes.REQ_METHOD_GET_REPLY;
getReplyList(true);
}
@Override
public void onLoadMore() {
if (resp != null && !resp.isLast) {
reqMethodId = haveHid ? HuPuRes.REQ_METHOD_GET_MORE_LINK_REPLY
: HuPuRes.REQ_METHOD_GET_MORE_REPLY;
getReplyList(false);
} else {
// showToast("已经到底啦");
// mListView.mFooterView.findViewById(R.id.xlistview_footer_text).setVisibility(View.VISIBLE);
// mListView.mFooterView.findViewById(R.id.xlistview_footer_progressbar).setVisibility(View.GONE);
/*
* if (!isTouch) { mListView.setPullLoadEnable(false, false);
* }else { mListView.setPullLoadEnable(false, true); }
*/
// mListView.setPullLoadEnable(false, true);
mListView.stopLoadMore();
}
}
}
@Override
public void treatClickEvent(int id) {
super.treatClickEvent(id);
switch (id) {
case R.id.btn_back:
finish();
switchReplyLayout(false);
break;
case R.id.commit_reply:
if (!commitContent.getText().toString().equals("")) {
switchReplyLayout(false);
initParameter();
mParams.put("content", commitContent.getText().toString());
if (haveHid) {
mParams.put("hid", hid);
sendRequest(HuPuRes.REQ_METHOD_POST_LINK_REPLY, mParams,
new HupuHttpHandler(this), false);
} else {
mParams.put("nid", "" + in.getLongExtra("nid", 1));
sendRequest(HuPuRes.REQ_METHOD_POST_REPLY,
in.getStringExtra("tag"), mParams,
new HupuHttpHandler(this), false);
}
} else {
showToast("请输入评论内容");
}
break;
case R.id.to_reply_img:
replyId = 0;
if (mAdapter != null) {
mAdapter.setReplyId(0, replyId);
mAdapter.notifyDataSetChanged();
}
if (SharedPreferencesMgr.getString(HuPuRes.KEY_NICK_NAME, "")
.equals("")) {
Intent inAccount = new Intent(this, NickNameActivity.class);
startActivity(inAccount);
} else {
switchReplyLayout(true);
}
break;
case R.id.close_reply:
switchReplyLayout(false);
break;
default:
break;
}
}
@Override
public void treatClickEvent(View view) {
int id = view.getId();
switch (id) {
case R.id.reply_item:
String[] strings = String.valueOf(view.getTag()).split(",");
if (replyId != Long.valueOf(strings[1])) {
replyId = Long.valueOf(strings[1]);
mAdapter.setReplyId(Integer.parseInt(strings[0]), replyId);
mAdapter.notifyDataSetChanged();
} else {
replyId = 0;
mAdapter.setReplyId(0, replyId);
mAdapter.notifyDataSetChanged();
}
// view.findViewById(R.id.pop_layout).setVisibility(View.VISIBLE);
break;
case R.id.like_num:
case R.id.to_light:
String[] lightInfo = String.valueOf(view.getTag()).split(",");
switch (Integer.parseInt(lightInfo[1])) {
case 0:
lightType = 1;
initParameter();
mParams.put("ncid", lightInfo[0]);
mParams.put("type", "1");
if (haveHid) {
sendRequest(HuPuRes.REQ_METHOD_POST_LINK_LIGHT, mParams,
new HupuHttpHandler(this), false);
} else {
sendRequest(HuPuRes.REQ_METHOD_POST_LIGHT,
in.getStringExtra("tag"), mParams,
new HupuHttpHandler(this), false);
}
break;
case 1:
showToast(getString(R.string.lighted));
break;
case 2:
showToast(getString(R.string.unlighted));
break;
default:
break;
}
break;
case R.id.uplight_num:
case R.id.to_unlight:
String[] unLightInfo = String.valueOf(view.getTag()).split(",");
switch (Integer.parseInt(unLightInfo[1])) {
case 0:
lightType = 2;
initParameter();
mParams.put("ncid", unLightInfo[0]);
mParams.put("type", "2");
if (haveHid) {
sendRequest(HuPuRes.REQ_METHOD_POST_LINK_LIGHT, mParams,
new HupuHttpHandler(this), false);
} else {
sendRequest(HuPuRes.REQ_METHOD_POST_LIGHT,
in.getStringExtra("tag"), mParams,
new HupuHttpHandler(this), false);
}
break;
case 1:
showToast(getString(R.string.lighted));
break;
case 2:
showToast(getString(R.string.unlighted));
break;
default:
break;
}
break;
case R.id.to_quote:
if (SharedPreferencesMgr.getString(HuPuRes.KEY_NICK_NAME, "")
.equals("")) {
Intent inAccount = new Intent(this, NickNameActivity.class);
startActivity(inAccount);
} else {
replyId = 0;
mAdapter.setReplyId(0, replyId);
mAdapter.notifyDataSetChanged();
commitContent.setText("@" + view.getTag().toString() + " ");
switchReplyLayout(true);
Editable etext = commitContent.getEditableText();
Selection.setSelection(etext, etext.length());
}
break;
case R.id.commit_layout_bg:
switchReplyLayout(false);
break;
default:
break;
}
}
private void getReplyList(boolean isRefresh) {
initParameter();
if (resp != null && !isRefresh) {
mParams.put("ncid", resp.lastNId + "");
mParams.put("create_time", resp.lastTime);
}
if (haveHid) {
mParams.put("hid", hid);
mParams.put("num", "" + 20);
sendRequest(reqMethodId, mParams, new HupuHttpHandler(this), false);
} else {
mParams.put("nid", "" + in.getLongExtra("nid", 1));
mParams.put("num", "" + 20);
sendRequest(reqMethodId, in.getStringExtra("tag"), mParams,
new HupuHttpHandler(this), false);
}
}
private ReplyRespEntity resp;
private int lightType = 0;
@Override
public void onReqResponse(Object o, int methodId) {
super.onReqResponse(o, methodId);
if (methodId == HuPuRes.REQ_METHOD_GET_REPLY
|| methodId == HuPuRes.REQ_METHOD_GET_LINK_REPLY) {
if (o != null) {
resp = (ReplyRespEntity) o;
mAdapter = new ReplyListAdapter(this, click);
mAdapter.setData(resp);
mListView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
mListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
// TODO Auto-generated method stub
isTouch = true;
if (replyId != 0) {
replyId = 0;
mAdapter.setReplyId(0, replyId);
mAdapter.notifyDataSetChanged();
}
}
@Override
public void onScroll(AbsListView view,
int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
// TODO Auto-generated method stub
}
});
mListView.stopRefresh();
mListView.stopLoadMore();
// page = resp.page;
// if (resp.page == resp.pages) {
// isMore = false;
// }
if (resp.replyList != null) {
findViewById(R.id.no_comment).setVisibility(
resp.replyList.size() > 0 ? View.GONE
: View.VISIBLE);
mListView
.setVisibility(resp.replyList.size() > 0 ? View.VISIBLE
: View.GONE);
// //默认关闭底部 没有评论了的提示
// mListView.mFooterView.findViewById(R.id.xlistview_footer_text).setVisibility(View.GONE);
} else {
findViewById(R.id.no_comment).setVisibility(View.VISIBLE);
mListView.setVisibility(View.GONE);
}
}
} else if (methodId == HuPuRes.REQ_METHOD_GET_MORE_REPLY
|| methodId == HuPuRes.REQ_METHOD_GET_MORE_LINK_REPLY) {
if (o != null) {
ReplyRespEntity moreResp = (ReplyRespEntity) o;
for (int i = 0; i < moreResp.replyList.size(); i++) {
resp.replyList.add(moreResp.replyList.get(i));
}
resp.lastNId = moreResp.lastNId;
resp.lastTime = moreResp.lastTime;
resp.isLast = moreResp.isLast;
mAdapter.setData(resp);
mAdapter.notifyDataSetChanged();
mListView.stopRefresh();
mListView.stopLoadMore();
// page = moreResp.page;
// if (moreResp.page == moreResp.pages) {
// isMore = false;
// }
}
} else if (methodId == HuPuRes.REQ_METHOD_POST_REPLY
|| methodId == HuPuRes.REQ_METHOD_POST_LINK_REPLY) {
QuizCommitResp result = (QuizCommitResp) o;
if (result.result > 0) {
NewsLightEntity entity = new NewsLightEntity();
entity.user_name = SharedPreferencesMgr.getString(
HuPuRes.KEY_NICK_NAME, "");
entity.ncid = result.result;
entity.content = commitContent.getText().toString();
entity.light_count = "0";
entity.unlight_count = "0";
entity.create_time = "";
if (resp.replyList == null) {
resp.replyList = new LinkedList<NewsLightEntity>();
resp.replyList.add(0, entity);
findViewById(R.id.no_comment).setVisibility(
resp.replyList.size() > 0 ? View.GONE
: View.VISIBLE);
mListView
.setVisibility(resp.replyList.size() > 0 ? View.VISIBLE
: View.GONE);
} else {
resp.replyList.add(0, entity);
}
mAdapter.setData(resp);
mAdapter.notifyDataSetChanged();
showToast("评论成功!");
commitContent.setText("");
commitContent.setHint(R.string.reply_hint_text);
} else {
showToast("评论失败");
}
} else if (methodId == HuPuRes.REQ_METHOD_POST_LIGHT
|| methodId == HuPuRes.REQ_METHOD_POST_LINK_LIGHT) {
QuizCommitResp result = (QuizCommitResp) o;
if (result.result == 1) {
// mAdapter.addLightNum(replyId);
mAdapter.startAnim();
mAdapter.addLightNum(replyId, lightType);
mAdapter.notifyDataSetChanged();
} else {
}
}
if (resp != null && resp.isLast) {
mListView.setPullLoadEnable(false, true);
}
}
private void switchReplyLayout(boolean isShowEdit) {
if (isShowEdit) {
commitLayout.setVisibility(View.VISIBLE);
findViewById(R.id.commit_layout_bg).setVisibility(View.VISIBLE);
commitImg.setVisibility(View.GONE);
commitContent.requestFocus();
inputMethodManager.showSoftInput(commitContent,
InputMethodManager.SHOW_IMPLICIT);
} else {
commitContent.clearFocus();
inputMethodManager.hideSoftInputFromWindow(
commitContent.getWindowToken(), 0);
commitLayout.setVisibility(View.GONE);
findViewById(R.id.commit_layout_bg).setVisibility(View.GONE);
commitImg.setVisibility(View.VISIBLE);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if (commitLayout.getVisibility() == View.VISIBLE) {
switchReplyLayout(false);
} else {
finish();
}
}
return false;
}
}