package tv.acfun.a63;
import java.text.SimpleDateFormat;
import java.util.List;
import tv.acfun.a63.base.BaseActivity;
import tv.acfun.a63.util.ActionBarUtil;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.umeng.fb.FeedbackAgent;
import com.umeng.fb.model.Conversation;
import com.umeng.fb.model.DevReply;
import com.umeng.fb.model.Reply;
/**
* copy version of
* {@code https://github.com/umeng/umeng-android-sdk-theme/blob/master/fb/v4.3/src/com/umeng/fb/ConversationActivity.java}
*
*/
public class ConversationActivity extends BaseActivity {
private FeedbackAgent agent;
private Conversation defaultConversation;
private ReplyListAdapter adapter;
private ListView replyListView;
RelativeLayout header;
int headerHeight;
int headerPaddingOriginal;
EditText userReplyContentEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.umeng_fb_activity_conversation);
ActionBar bar = getSupportActionBar();
ActionBarUtil.setXiaomiFilterDisplayOptions(bar, false);
bar.setTitle("反(tu)馈(cao)");
try {
agent = new FeedbackAgent(this);
defaultConversation = agent.getDefaultConversation();
replyListView = (ListView) findViewById(R.id.umeng_fb_reply_list);
// setListViewHeader();
adapter = new ReplyListAdapter(this);
replyListView.setAdapter(adapter);
// sync up the conversations on Activity start up.
sync();
userReplyContentEdit = (EditText) findViewById(R.id.umeng_fb_reply_content);
findViewById(R.id.umeng_fb_send).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String content = userReplyContentEdit.getEditableText().toString().trim();
if (TextUtils.isEmpty(content))
return;
userReplyContentEdit.getEditableText().clear();
defaultConversation.addUserReply(content);
// adapter.notifyDataSetChanged();
// scoll to the end of listview after updating the
// conversation.
// replyList.setSelection(adapter.getCount()-1);
sync();
// hide soft input window after sending.
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
imm.hideSoftInputFromWindow(userReplyContentEdit.getWindowToken(), 0);
}
});
} catch (Exception e) {
e.printStackTrace();
this.finish();
}
}
void sync() {
Conversation.SyncListener listener = new Conversation.SyncListener() {
@Override
public void onSendUserReply(List<Reply> replyList) {
adapter.notifyDataSetChanged();
}
@Override
public void onReceiveDevReply(List<DevReply> replyList) {}
};
defaultConversation.sync(listener);
}
class ReplyListAdapter extends BaseAdapter {
Context mContext;
LayoutInflater mInflater;
public ReplyListAdapter(Context context) {
this.mContext = context;
mInflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
List<Reply> replyList = defaultConversation.getReplyList();
return (replyList == null) ? 0 : replyList.size();
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View,
* android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.umeng_fb_list_item, null);
holder = new ViewHolder();
holder.replyDate = (TextView) convertView.findViewById(R.id.umeng_fb_reply_date);
holder.replyContent = (TextView) convertView.findViewById(R.id.umeng_fb_reply_content);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Reply reply = defaultConversation.getReplyList().get(position);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (reply instanceof DevReply) {
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); // ALIGN_PARENT_RIGHT
holder.replyContent.setLayoutParams(layoutParams);
// set bg after layout
holder.replyContent.setBackgroundResource(R.drawable.umeng_fb_reply_left_bg);
} else {
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // ALIGN_PARENT_RIGHT
// layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);
holder.replyContent.setLayoutParams(layoutParams);
holder.replyContent.setBackgroundResource(R.drawable.umeng_fb_reply_right_bg);
}
holder.replyDate.setText(SimpleDateFormat.getDateTimeInstance().format(reply.getDatetime()));
holder.replyContent.setText(reply.getContent());
return convertView;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int position) {
return defaultConversation.getReplyList().get(position);
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
return position;
}
class ViewHolder {
TextView replyDate;
TextView replyContent;
}
}
}