package org.qii.weiciyuan.ui.dm; import org.qii.weiciyuan.R; import org.qii.weiciyuan.bean.UserBean; import org.qii.weiciyuan.bean.UserListBean; import org.qii.weiciyuan.bean.android.AsyncTaskLoaderResult; import org.qii.weiciyuan.dao.search.SearchDao; import org.qii.weiciyuan.support.asyncdrawable.TimeLineBitmapDownloader; import org.qii.weiciyuan.support.lib.PerformanceImageView; import org.qii.weiciyuan.support.utils.GlobalContext; import org.qii.weiciyuan.ui.basefragment.AbstractFriendsFanListFragment; import org.qii.weiciyuan.ui.interfaces.AbstractAppActivity; import org.qii.weiciyuan.ui.loader.FriendUserLoader; import org.qii.weiciyuan.ui.main.MainTimeLineActivity; import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; import android.support.v4.content.Loader; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Filter; import android.widget.Filterable; import android.widget.ProgressBar; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * User: qii * Date: 13-3-2 */ public class DMSelectUserActivity extends AbstractAppActivity { private List<UserBean> data; private ProgressBar suggestProgressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dmselectuseractivity_layout); getActionBar().setTitle(R.string.select_dm_receiver); getActionBar().setDisplayShowHomeEnabled(false); getActionBar().setDisplayShowTitleEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); View title = getLayoutInflater().inflate(R.layout.dmselectuseractivity_title_layout, null); suggestProgressBar = (ProgressBar) title.findViewById(R.id.have_suggest_progressbar); getActionBar().setCustomView(title, new ActionBar.LayoutParams(Gravity.RIGHT)); getActionBar().setDisplayShowCustomEnabled(true); if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() .replace(R.id.list_content, SelectFriendsListFragment .newInstance(GlobalContext.getInstance().getAccountBean().getInfo())) .commit(); } AutoCompleteTextView search = (AutoCompleteTextView) findViewById(R.id.search); AutoCompleteAdapter adapter = new AutoCompleteAdapter(this, android.R.layout.simple_dropdown_item_1line); search.setAdapter(adapter); search.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(); intent.putExtra("user", data.get(position)); setResult(0, intent); finish(); } }); } public UserBean getUser() { return GlobalContext.getInstance().getAccountBean().getInfo(); } public ProgressBar getSuggestProgressBar() { return suggestProgressBar; } @Override public boolean onOptionsItemSelected(MenuItem item) { Intent intent; switch (item.getItemId()) { case android.R.id.home: intent = MainTimeLineActivity.newIntent(); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } return false; } private class AutoCompleteAdapter extends ArrayAdapter<UserBean> implements Filterable { private DMSelectUserActivity activity; private ProgressBar suggestProgressBar; public AutoCompleteAdapter(DMSelectUserActivity context, int textViewResourceId) { super(context, textViewResourceId); data = new ArrayList<UserBean>(); this.activity = context; this.suggestProgressBar = this.activity.getSuggestProgressBar(); } @Override public int getCount() { return data.size(); } @Override public UserBean getItem(int index) { return data.get(index); } @Override public Filter getFilter() { Filter myFilter = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults filterResults = new FilterResults(); if (constraint != null) { activity.runOnUiThread(new Runnable() { @Override public void run() { suggestProgressBar.setVisibility(View.VISIBLE); } }); SearchDao dao = new SearchDao(GlobalContext.getInstance().getSpecialToken(), constraint.toString()); try { data = dao.getUserList().getUsers(); } catch (Exception e) { } // Now assign the values and count to the FilterResults object filterResults.values = data; filterResults.count = data.size(); } activity.runOnUiThread(new Runnable() { @Override public void run() { suggestProgressBar.setVisibility(View.INVISIBLE); } }); return filterResults; } @Override public CharSequence convertResultToString(Object resultValue) { return ((UserBean) resultValue).getScreen_name(); } @Override protected void publishResults(CharSequence contraint, FilterResults results) { if (results != null && results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } } }; return myFilter; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { convertView = activity.getLayoutInflater() .inflate(R.layout.dm_search_user_dropdown_item_layout, parent, false); PerformanceImageView avatar = (PerformanceImageView) convertView .findViewById(R.id.avatar); TextView username = (TextView) convertView.findViewById(R.id.username); TimeLineBitmapDownloader.getInstance().downloadAvatar(avatar, getItem(position)); username.setText(getItem(position).getScreen_name()); return convertView; } public View getView(int position, View convertView, ViewGroup parent) { return getDropDownView(position, convertView, parent); } } public static class SelectFriendsListFragment extends AbstractFriendsFanListFragment { public static SelectFriendsListFragment newInstance(UserBean userBean) { SelectFriendsListFragment fragment = new SelectFriendsListFragment(); Bundle bundle = new Bundle(); bundle.putParcelable("userBean", userBean); fragment.setArguments(bundle); return fragment; } public SelectFriendsListFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(false); setRetainInstance(false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override protected UserBean getCurrentUser() { return getArguments().getParcelable("userBean"); } @Override protected void buildActionBarSubtitle() { //empty } protected void listViewItemClick(AdapterView parent, View view, int position, long id) { Intent intent = new Intent(); intent.putExtra("user", getList().getUsers().get(position)); getActivity().setResult(0, intent); getActivity().finish(); } @Override protected Loader<AsyncTaskLoaderResult<UserListBean>> onCreateNewUserLoader(int id, Bundle args) { String token = GlobalContext.getInstance().getSpecialToken(); String cursor = String.valueOf(0); return new FriendUserLoader(getActivity(), token, getCurrentUser().getId(), cursor); } @Override protected Loader<AsyncTaskLoaderResult<UserListBean>> onCreateOldUserLoader(int id, Bundle args) { if (getList().getUsers().size() > 0 && Integer.valueOf(getList().getNext_cursor()) == 0) { return null; } String token = GlobalContext.getInstance().getSpecialToken(); String cursor = String.valueOf(bean.getNext_cursor()); return new FriendUserLoader(getActivity(), token, getCurrentUser().getId(), cursor); } } }