package com.jesusjzp.sanwensuibi; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnActionExpandListener; import com.actionbarsherlock.view.SubMenu; import com.jesusjzp.sanwensuibi.R; import com.jesusjzp.db.DBManager; import com.jesusjzp.entity.Article; import com.twotoasters.jazzylistview.JazzyHelper; import com.twotoasters.jazzylistview.JazzyListView; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.Toast; public class ArticleListActivity extends BaseActivity { private EditText editsearch; private static final String KEY_TRANSITION_EFFECT = "transition_effect"; private static final int LIMIT = 60; private static String title; private static String id; private JazzyListView mList; private HashMap<String, Integer> mEffectMap; private int mCurrentTransitionEffect = JazzyHelper.TILT; private ArticleListAdapter adapter; private ArrayList<Article> arraylist = new ArrayList<Article>(); DBManager dbManager; Cursor cursor; public ArticleListActivity() { super(R.string.app_name); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.content_frame); Bundle bundle = new Bundle(); bundle = getIntent().getExtras(); title = bundle.getString("title"); id = bundle.getString("id"); // Toast.makeText(this, title, Toast.LENGTH_SHORT).show(); getSupportActionBar().setTitle(title); getSupportActionBar().setDisplayHomeAsUpEnabled(true); dbManager = new DBManager(this); dbManager.openDatabase(); if (id.equals("-2")) { cursor = dbManager.fetchFavorite(); } else if (id.equals("-1")) { cursor = dbManager.fetchHistory(LIMIT); } else if (id.equals("7")) { return; } else if (id.equals("8")) { return; } else if (id.equals("9")) { return; } else { cursor = dbManager.fetchArticle(id, LIMIT); } dbManager.closeDatabase(); for (int i = 0; i < cursor.getCount(); i++) { Article article = new Article(cursor.getString(0), //id cursor.getString(1), //url cursor.getString(2), //title cursor.getString(3), //abstr cursor.getString(4), //status cursor.getString(5)); //type arraylist.add(article); cursor.moveToNext(); } mList = (JazzyListView) findViewById(android.R.id.list); adapter = new ArticleListAdapter(this, arraylist); mList.setAdapter(adapter); if (savedInstanceState != null) { mCurrentTransitionEffect = savedInstanceState.getInt(KEY_TRANSITION_EFFECT, JazzyHelper.TILT); setupJazziness(mCurrentTransitionEffect); } setSlidingActionBarEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { // set search action getSupportMenuInflater().inflate(R.menu.menu_search, menu); editsearch = (EditText) menu.findItem(R.id.menu_search).getActionView(); editsearch.addTextChangedListener(textWatcher); MenuItem menuSearch = menu.findItem(R.id.menu_search); menuSearch.setOnActionExpandListener(new OnActionExpandListener() { @Override public boolean onMenuItemActionCollapse(MenuItem item) { editsearch.setText(""); editsearch.clearFocus(); return true; } // Menu Action Expand @Override public boolean onMenuItemActionExpand(MenuItem item) { editsearch.requestFocus(); // Force the keyboard to show on EditText focus InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); return true; } }); // set more effects action SubMenu subMenu = menu.addSubMenu("Action Item"); mEffectMap = new HashMap<String, Integer>(); int i = 0; String[] effects = this.getResources().getStringArray(R.array.jazzy_effects); for (String effect : effects) { mEffectMap.put(effect, i++); } List<String> effectList = new ArrayList<String>(Arrays.asList(effects)); Collections.sort(effectList); effectList.remove(getString(R.string.standard)); effectList.add(0, getString(R.string.standard)); for (String effect : effectList) { subMenu.add(0, mEffectMap.get(effect), 0, effect); } MenuItem subMenu1Item = subMenu.getItem(); subMenu1Item.setIcon(R.drawable.action_overflow); subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.menu_search || item.getItemId() == 0) { return false; } else if (item.getItemId() == android.R.id.home) { return super.onOptionsItemSelected(item); } else { String strEffect = item.getTitle().toString(); // Toast.makeText(this, strEffect, Toast.LENGTH_SHORT).show(); setupJazziness(mEffectMap.get(strEffect)); return true; } } // EditText TextWatcher private TextWatcher textWatcher = new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { String text = editsearch.getText().toString() .toLowerCase(Locale.getDefault()); adapter.filter(text); } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } }; @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_TRANSITION_EFFECT, mCurrentTransitionEffect); } private void setupJazziness(int effect) { mCurrentTransitionEffect = effect; mList.setTransitionEffect(mCurrentTransitionEffect); } }