package com.konka.music.ui.fragment;
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.content.Loader;
import android.text.Editable;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;
import com.konka.music.R;
import com.konka.music.adapter.TrackAdapter;
import com.konka.music.loader.SearchMusicLoader;
import com.konka.music.pojo.MusicInfo;
import com.konka.music.ui.fragment.abstractfragment.KBaseListFragment_MusicInfoArray;
import com.konka.music.ui.view.ProgressLayout;
import com.konka.music.util.Assist;
import com.konka.music.util.ToastUtil;
import com.konka.music.util.ViewUtility;
public class SearchFragment extends KBaseListFragment_MusicInfoArray {
private static final String ARGUMENT_SEARCH_KEY = "argument_search_key";
public static SearchFragment newInstance(String searchKey) {
SearchFragment searchFragment = new SearchFragment();
Bundle bundle = new Bundle();
bundle.putString(ARGUMENT_SEARCH_KEY, searchKey);
searchFragment.setArguments(bundle);
return searchFragment;
}
private SearchFragmentHolder searchFragmentHolder;
class SearchFragmentHolder extends KBaseHolder {
TextView count_text_view;
AutoCompleteTextView search_edit;
ProgressLayout progress_layout;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getActivity().getActionBar().setTitle("搜索");
View view = inflater.inflate(R.layout.searchfragment_layout, container, false);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
searchFragmentHolder = new SearchFragmentHolder();
searchFragmentHolder.kBaseListView = ViewUtility.findViewById(view, R.id.searchResult_listview);
searchFragmentHolder.count_text_view = ViewUtility.findViewById(view, R.id.count_text_view);
searchFragmentHolder.progress_layout = ViewUtility.findViewById(view, R.id.progress_layout);
searchFragmentHolder.search_edit = ViewUtility.findViewById(view, R.id.search_edit);
ViewUtility.findViewById(view, R.id.search_button, this);
searchFragmentHolder.listViewAdapter = new TrackAdapter(getActivity(), this);
searchFragmentHolder.kBaseListView.setAdapter(searchFragmentHolder.listViewAdapter);
registerForContextMenu(searchFragmentHolder.kBaseListView);
searchFragmentHolder.kBaseListView.setOnItemClickListener(this);
if (getArguments() != null && getArguments().containsKey(ARGUMENT_SEARCH_KEY)) {
String searchKey = getArguments().getString(ARGUMENT_SEARCH_KEY);
if (!TextUtils.isEmpty(searchKey)) {
searchFragmentHolder.search_edit.setText(searchKey);
getLoaderManager().initLoader(Assist.SEARCH_LOADER_ID, getArguments(), this);
}
} else {
ToastUtil.showToast(getActivity(), getString(R.string.search_edit_toast));
}
}
@Override
public Loader<ArrayList<MusicInfo>> onCreateLoader(int arg0, Bundle arg1) {
String defaultValue = "%E5%B0%8F%E8%8B%B9%E6%9E%9C";
String searchkey = arg1.getString(ARGUMENT_SEARCH_KEY, defaultValue);
searchFragmentHolder.listViewAdapter.clear();
searchFragmentHolder.progress_layout.setProgress(true);
return new SearchMusicLoader(getActivity(), searchkey);
}
@Override
public void onLoadFinished(Loader<ArrayList<MusicInfo>> arg0, ArrayList<MusicInfo> arg1) {
super.onLoadFinished(arg0, arg1);
if (arg1 != null && arg1.size() > 0 && searchFragmentHolder.listViewAdapter.getCount() == 0) {
searchFragmentHolder.listViewAdapter.addAll(arg1);
searchFragmentHolder.count_text_view.setText(String.format(getString(R.string.search_result_count), arg1.size()));
} else {
if (searchFragmentHolder.listViewAdapter.getCount() == 0) {
searchFragmentHolder.count_text_view.setText(String.format(getString(R.string.search_result_count), 0));
}
}
searchFragmentHolder.progress_layout.setProgress(false);
}
@Override
public void onLoaderReset(Loader<ArrayList<MusicInfo>> arg0) {
super.onLoaderReset(arg0);
if (searchFragmentHolder.listViewAdapter != null) {
searchFragmentHolder.listViewAdapter.clear();
}
}
@Override
public void onClick(View v) {
super.onClick(v);
if (v.getId() == R.id.search_button) {
handleSearch();
}
}
private void handleSearch() {
Bundle bundle = new Bundle();
Editable editable = searchFragmentHolder.search_edit.getText();
String searchKey = editable.toString();
if (!TextUtils.isEmpty(searchKey)) {
bundle.putString(ARGUMENT_SEARCH_KEY, searchKey);
getLoaderManager().restartLoader(Assist.SEARCH_LOADER_ID, bundle, this);
} else {
ToastUtil.showToast(getActivity(), getString(R.string.search_edit_toast));
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, CONTEXT_MENU_DOWNLOAD, Menu.NONE, "下载");
}
@Override
protected KBaseHolder getKBaseHolder() {
return searchFragmentHolder;
}
}