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(); } }