package net.dev123.yibo;
import net.dev123.mblog.entity.User;
import net.dev123.yibo.common.theme.ThemeUtil;
import net.dev123.yibo.db.LocalAccount;
import net.dev123.yibo.service.adapter.SocialGraphListAdapter;
import net.dev123.yibo.service.listener.GoBackClickListener;
import net.dev123.yibo.service.listener.GoHomeClickListener;
import net.dev123.yibo.service.listener.SocialGraphItemClickListener;
import net.dev123.yibo.service.listener.UserRecyclerListener;
import net.dev123.yibo.service.task.SocialGraphTask;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class SocialGraphActivity extends BaseActivity {
private YiBoApplication yibo;
private SocialGraphListAdapter adapter = null;
private int socialGraphType = SocialGraphTask.TYPE_FOLLOWERS;
private LocalAccount account;
private User user;
private ListView lvUser;
private View listFooter;
private UserRecyclerListener userRecyclerListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.social_graph);
yibo = (YiBoApplication) getApplication();
initComponents();
bindEvent();
executeTask();
}
private void initComponents() {
LinearLayout llHeaderBase = (LinearLayout)findViewById(R.id.llHeaderBase);
lvUser = (ListView) findViewById(R.id.lvUser);
TextView tvTitle = (TextView) findViewById(R.id.tvTitle);
ThemeUtil.setSecondaryHeader(llHeaderBase);
ThemeUtil.setContentBackground(lvUser);
ThemeUtil.setListViewStyle(lvUser);
Intent intent = this.getIntent();
socialGraphType = intent.getIntExtra("SOCIAL_GRAPH_TYPE", socialGraphType);
user = (User)intent.getSerializableExtra("USER");
if (user == null) {
return;
}
account = (LocalAccount)intent.getSerializableExtra("ACCOUNT");
if (account == null) {
account = yibo.getCurrentAccount();
}
adapter = new SocialGraphListAdapter(this, account, socialGraphType);
lvUser.setFastScrollEnabled(yibo.isSliderEnabled());
showLoadingFooter();
lvUser.setAdapter(adapter);
userRecyclerListener = new UserRecyclerListener();
lvUser.setRecyclerListener(userRecyclerListener);
setBack2Top(lvUser);
if (socialGraphType == SocialGraphTask.TYPE_FOLLOWERS) {
tvTitle.setText(R.string.title_followers);
} else if (socialGraphType == SocialGraphTask.TYPE_FRIENDS) {
tvTitle.setText(R.string.title_friends);
} else if (socialGraphType == SocialGraphTask.TYPE_BLOCKS) {
tvTitle.setText(R.string.title_blocks);
}
}
private void bindEvent() {
Button btnBack = (Button)this.findViewById(R.id.btnBack);
btnBack.setOnClickListener(new GoBackClickListener());
Button btnOperate = (Button) this.findViewById(R.id.btnOperate);
btnOperate.setVisibility(View.VISIBLE);
btnOperate.setText(R.string.btn_home);
btnOperate.setOnClickListener(new GoHomeClickListener());
ListView lvUser = (ListView)this.findViewById(R.id.lvUser);
lvUser.setOnItemClickListener(new SocialGraphItemClickListener(this));
}
private void executeTask() {
new SocialGraphTask(adapter, user).execute();
}
public void showLoadingFooter() {
if (listFooter != null) {
lvUser.removeFooterView(listFooter);
}
listFooter = getLayoutInflater().inflate(R.layout.list_item_loading, null);
ThemeUtil.setListViewLoading(listFooter);
lvUser.addFooterView(listFooter);
}
public void showMoreFooter() {
if (listFooter != null) {
lvUser.removeFooterView(listFooter);
}
listFooter = getLayoutInflater().inflate(R.layout.list_item_more, null);
ThemeUtil.setListViewMore(listFooter);
listFooter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
executeTask();
}
});
lvUser.addFooterView(listFooter);
}
public void showNoMoreFooter() {
if (listFooter != null) {
lvUser.removeFooterView(listFooter);
}
listFooter = getLayoutInflater().inflate(R.layout.list_item_more, null);
ThemeUtil.setListViewMore(listFooter);
TextView tvFooter = (TextView)listFooter.findViewById(R.id.tvFooter);
tvFooter.setText(R.string.label_no_more);
lvUser.addFooterView(listFooter);
}
}