package net.coding.program.subject;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import net.coding.program.MyApp;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.ImageLoadTool;
import net.coding.program.common.SaveFragmentPagerAdapter;
import net.coding.program.common.ui.BaseActivity;
import net.coding.program.maopao.MaopaoSearchActivity_;
import net.coding.program.model.Subject;
import net.coding.program.subject.loop.AutoScrollLoopViewPager;
import net.coding.program.third.WechatTab;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* Created by david on 15-7-20.
* 话题墙
*/
@EActivity(R.layout.activity_subject_wall)
@OptionsMenu(R.menu.subject_wall_activity)
public class SubjectWallActivity extends BaseActivity {
@ViewById
AutoScrollLoopViewPager loopViewPager;
@ViewById
WechatTab tabs;
@ViewById
ViewPager pager;
@ViewById(R.id.topic_my_container)
LinearLayout mTopicMyContainer;
@ViewById(R.id.topic_hot_container)
FrameLayout mTopicHotContainer;
private String mTweetAdUrl = Global.HOST_API + "/tweet_topic/marketing_ad";
private String mTweetAdTag = "marketing_ad";
private List<Subject.SubjectDescObject> mHotTweetDescObjects = new ArrayList<>();
private MySpinnerAdapter mSpinnerAdapter;
private PagerAdapter mAdPagerAdapter = new PagerAdapter() {
@Override
public int getCount() {
if (mHotTweetDescObjects == null) {
return 0;
}
return mHotTweetDescObjects.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
ImageView imageView = new ImageView(SubjectWallActivity.this);
imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
imageView.setTag(position);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SubjectDetailActivity_.intent(SubjectWallActivity.this).subjectDescObject(mHotTweetDescObjects.get(position)).start();
}
});
getImageLoad().loadImage(imageView, mHotTweetDescObjects.get(position).image_url, ImageLoadTool.bannerOptions);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if (object instanceof View) {
container.removeView((View) object);
}
}
};
@AfterViews
protected final void initSubjectWallActivity() {
initTitleBar();
showMyTopic();
showHotTopic();
getTweetTopicAdFromServer();
}
@OptionsItem(android.R.id.home)
protected final void annotaionClose() {
finish();
}
@OptionsItem
protected final void action_search() {
MaopaoSearchActivity_.intent(this).start();
}
private void initTitleBar() {
mSpinnerAdapter = new MySpinnerAdapter(getLayoutInflater());
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
supportActionBar.setDisplayHomeAsUpEnabled(true);
supportActionBar.setDisplayShowHomeEnabled(true);
supportActionBar.setHomeButtonEnabled(true);
supportActionBar.setTitle("");
supportActionBar.setDisplayShowCustomEnabled(true);
supportActionBar.setCustomView(R.layout.actionbar_custom_spinner);
Spinner spinner = (Spinner) supportActionBar.getCustomView().findViewById(R.id.spinner);
spinner.setAdapter(mSpinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mSpinnerAdapter.setCheckPos(position);
changePageShow(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
private void showHotTopic() {
Fragment fragment = SubjectListFragment_.builder()
.userKey(MyApp.sUserObject.global_key)
.mType(SubjectListFragment.Type.hot)
.build();
getSupportFragmentManager().beginTransaction().replace(R.id.topic_hot_container, fragment).commit();
}
private void showMyTopic() {
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
}
private void initLooperViewPager() {
loopViewPager.setAdapter(mAdPagerAdapter);
loopViewPager.setSmoothScrollDurationRatio(3);
loopViewPager.startAutoScroll();
}
private void getTweetTopicAdFromServer() {
getNetwork(mTweetAdUrl, mTweetAdTag);
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (mTweetAdTag.equals(tag)) {
JSONArray dataArr = respanse.optJSONArray("data");
if (dataArr != null) {
Subject.SubjectDescObject tweetDescObject = null;
mHotTweetDescObjects.clear();
for (int i = 0; i < dataArr.length(); i++) {
tweetDescObject = new Subject.SubjectDescObject(dataArr.optJSONObject(i));
mHotTweetDescObjects.add(tweetDescObject);
}
initLooperViewPager();
mAdPagerAdapter.notifyDataSetChanged();
}
return;
}
}
private void changePageShow(int pos) {
if (pos == 1) {
mTopicHotContainer.setVisibility(View.GONE);
mTopicMyContainer.setVisibility(View.VISIBLE);
} else {
mTopicHotContainer.setVisibility(View.VISIBLE);
mTopicMyContainer.setVisibility(View.GONE);
}
}
class MySpinnerAdapter extends BaseAdapter {
int checkPos = 0;
private LayoutInflater inflater;
private String[] titles = new String[]{"热门话题", "我的话题"};
public MySpinnerAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}
public void setCheckPos(int pos) {
checkPos = pos;
}
@Override
public int getCount() {
return 2;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.spinner_layout_head, parent, false);
}
((TextView) convertView).setText(titles[position]);
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.spinner_layout_item, parent, false);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(titles[position]);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
icon.setVisibility(View.GONE);
if (checkPos == position) {
convertView.setBackgroundColor(getResources().getColor(R.color.divide));
} else {
convertView.setBackgroundColor(getResources().getColor(R.color.transparent));
}
return convertView;
}
}
class MyPagerAdapter extends SaveFragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
if (position == 0)
return "我关注的";
return "我参与的";
}
@Override
public int getCount() {
return 2;
}
@Override
public Fragment getItem(int position) {
final SubjectListFragment.Type types[] = new SubjectListFragment.Type[]{
SubjectListFragment.Type.follow,
SubjectListFragment.Type.join
};
Fragment fragment = SubjectListFragment_.builder()
.userKey(MyApp.sUserObject.global_key)
.mType(types[position])
.build();
saveFragment(fragment);
return fragment;
}
}
}