package com.partynetwork.iparty.ishare;
import java.util.ArrayList;
import java.util.List;
import com.partynetwork.dataprovider.DataProvider.IJsonResultListener;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.json.struct.Theme_getThemeArrayRequest;
import com.partynetwork.dataprovider.json.struct.Theme_getThemeArrayResponse;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.info.ThemeInfo;
import com.baidu.mobstat.StatService;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.TextView;
public class IshareThemeActivity extends Activity implements
IJsonResultListener {
/**
* 返回按钮
*/
@ViewInject(R.id.menu_head_left)
private LinearLayout backBtn;
/**
* 确定按钮
*/
@ViewInject(R.id.menu_head_right)
private LinearLayout sureBtn;
/**
* 用来显示已选择的主题布局
*/
@ViewInject(R.id.theme_choose_ll)
private LinearLayout choose_body;
/**
* 搜索文本输入框
*/
@ViewInject(R.id.add_et)
private EditText add_et;
/**
* 添加按钮
*/
@ViewInject(R.id.publish_tv)
private TextView publish_tv;
/**
* 下方显示内容的listview
*/
@ViewInject(R.id.listview)
private ListView listview;
/**
* 顶部显示的布局
*/
@ViewInject(R.id.title_layout)
private LinearLayout title_layout;
/**
* 顶部显示的标题
*/
@ViewInject(R.id.title)
private TextView title;
/**
* 评论列表
*/
@ViewInject(R.id.ishare_info_discuss_ll)
private LinearLayout ll_content;
/**
* 适配器
*/
private IshareThemeAdapter adapter;
/**
* 用来记录显示的listView
*/
private List<String> dataList = new ArrayList<String>();
/**
* 用来存放已经选择的主题控件
*/
private List<LinearLayout> list = new ArrayList<LinearLayout>();
/**
* 用来存放选择的主题
*/
private List<String> themeList = new ArrayList<String>();
private String[] defaultThemeArray = new String[] { "夜店娱乐", "演出文化", "旅行户外",
"运动棋牌", "美食聚会", "教育沙龙", "高端生活", "时尚模特", "公益慈善", "精英名流" };
/** 现有的主题集合 */
public static final String THEME_ARRAY = "themeArray";
public static final int THEME_REQUEST_CODE = 50;
private String hotTheme = "热门主题";
private String defaultTheme = "默认主题";
/**
*
* 覆盖方法
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_theme);
ViewUtils.inject(this);
init();
sendRequest();
}
/**
* 发送获取热门主题的请求
*/
private void sendRequest() {
AppContext context=(AppContext) getApplication();
Theme_getThemeArrayRequest request = new Theme_getThemeArrayRequest();
request.setThemeType(2);
request.setPageSize(10);
request.setLastId(0);
request.setPageNumber(0);
context.getmDataProvider().getJsonFromNetwork(request, this);
}
/**
* 初始化方法
*/
private void init() {
try {
String[] str = getIntent().getStringArrayExtra(THEME_ARRAY);
for (String a : str) {
addTheme(a);
}
} catch (Exception e) {
}
initData();
adapter = new IshareThemeAdapter(this, dataList);
listview.setAdapter(adapter);
listview.setTextFilterEnabled(true);
listview.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
MarginLayoutParams params = (MarginLayoutParams) title_layout
.getLayoutParams();
int location = 0;
for (int i = 0; i < dataList.size(); i++) {
if (dataList.get(i).equals(hotTheme)) {
location = i;
}
}
if (firstVisibleItem < location) {
title.setText(defaultTheme);
} else {
title.setText(hotTheme);
}
if (location - 1 == firstVisibleItem) {
View childView = view.getChildAt(0);
if (childView != null) {
int titleHeight = title_layout.getHeight();
int bottom = childView.getBottom();
if (bottom < titleHeight) {
float pushedDistance = bottom - titleHeight;
params.topMargin = (int) pushedDistance;
title_layout.setLayoutParams(params);
} else {
if (params.topMargin != 0) {
params.topMargin = 0;
title_layout.setLayoutParams(params);
}
}
}
}
if (firstVisibleItem != location - 1) {
params.topMargin = 0;
}
}
});
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position == 0 || position == 9) {
return;
}
String str = dataList.get(position);
addTheme(str);
}
});
}
/**
* 添加list标题
*/
private void initData() {
dataList.add(defaultTheme);
for (String str : defaultThemeArray) {
dataList.add(str);
}
dataList.add(hotTheme);
}
/**
* 点击事件监听
*
* @param v
*/
@OnClick({ R.id.menu_head_left, R.id.menu_head_right, R.id.publish_tv })
public void btnClick(View v) {
switch (v.getId()) {
case R.id.menu_head_left:
// 返回
finish();
break;
case R.id.menu_head_right:
// 确定
Intent intent = new Intent();
intent.putExtra(THEME_ARRAY,
(String[]) themeList.toArray(new String[themeList.size()]));
this.setResult(THEME_REQUEST_CODE, intent);
finish();
break;
case R.id.publish_tv:
// 添加主题
String title = add_et.getText().toString();
if (title.equals("")) {
return;
}
addTheme(title);
add_et.setText("");
break;
default:
break;
}
}
/**
* 添加主题
*
* @param title
*/
private void addTheme(String title) {
for (String str : themeList) {
if (str.equals(title)) {
return;
}
}
// 生成布局
LinearLayout la = new LinearLayout(this);
la.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
param.leftMargin = 10;
la.setLayoutParams(param);
// 生成TextView
TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.stroke_btn);
tv.setGravity(Gravity.CENTER);
tv.setPadding(5, 5, 5, 5);
tv.setText("#" + title);
// 生成ImageView
ImageView iv = new ImageView(this);
iv.setId(1);
iv.setImageResource(R.drawable.voice_bg_delete);
// 添加到布局
la.addView(tv);
la.addView(iv);
// 把布局添加到显示区域
if (list.size() >= 3) {
return;
}
list.add(la);
themeList.add(title);
refreshTheme();
}
/**
* 删除主题
*/
private void subTheme(int location) {
list.remove(location);
themeList.remove(location);
refreshTheme();
}
/**
* 刷新布局
*/
private void refreshTheme() {
choose_body.removeAllViews();
for (int i = 0; i < list.size(); i++) {
LinearLayout ll = list.get(i);
ImageView iv = (ImageView) ll.findViewById(1);
iv.setTag(i);
iv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int location = Integer.parseInt(v.getTag().toString());
subTheme(location);
}
});
choose_body.addView(list.get(i));
}
LayoutParams param = (LayoutParams) choose_body.getLayoutParams();
if (list.size() == 0) {
param.height = 0;
} else {
param.height = 60;
}
}
/**
* 请求开始
*/
public void onNetworkRequest() {
// TODO 自动生成的方法存根
}
/**
* 请求成功后的回调方法
*/
public void onResultSuccess(NetworkEntity entity) {
if (entity.getRequest().getAction()
.equals(new Theme_getThemeArrayRequest().getAction())) {
Theme_getThemeArrayResponse themeResponse = (Theme_getThemeArrayResponse) entity
.getResponse();
ThemeInfo[] info = themeResponse.getDetails();
for (ThemeInfo item : info) {
dataList.add(item.getThemeName());
adapter.notifyDataSetChanged();
}
}
}
/**
* 请求失败后的回调方法
*/
public void onResultFail(String result) {
}
@Override
protected void onResume() {
StatService.onResume(this);
super.onResume();
}
@Override
protected void onPause() {
StatService.onPause(this);
super.onPause();
}
}