package net.coding.program.subject;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import net.coding.program.R;
import net.coding.program.common.Global;
import net.coding.program.common.MyImageGetter;
import net.coding.program.common.ui.BaseFragment;
import net.coding.program.maopao.MaopaoDetailActivity_;
import net.coding.program.model.Maopao;
import net.coding.program.subject.adapter.SubjectSearchListAdapter;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* Created by david on 15-7-21.
* <p>
* 搜索冒泡的数据
*/
@EFragment(R.layout.subject_search_fragment)
public class SubjectSearchFragment extends BaseFragment {
@ViewById
ListView listView;
SubjectSearchListAdapter mSubjectSearchListAdapter;
private String searchUrl = Global.HOST_API + "/search/quick?q=";
private String searchTag = "search_tag";
private TextView mSearchResultView;
private MyImageGetter myImageGetter;
// 当前的搜索条件
private String mCondition = "";
// 热门话题列表的数据
private List<Maopao.MaopaoObject> maopaoObjectList = new ArrayList<>();
private AdapterView.OnItemClickListener mSubjectItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int pos = position - listView.getHeaderViewsCount();
if (pos >= 0 && pos < maopaoObjectList.size()) {
MaopaoDetailActivity_.intent(getActivity()).mMaopaoObject(maopaoObjectList.get(pos)).start();
}
}
};
public void updateData(String condition) {
if (!mCondition.equals(condition)) {
mCondition = condition;
searchMaopao();
}
}
@AfterViews
void init() {
myImageGetter = new MyImageGetter(getActivity());
mSubjectSearchListAdapter = new SubjectSearchListAdapter(getActivity(), maopaoObjectList, myImageGetter);
initSearchHeaderView();
listView.setAdapter(mSubjectSearchListAdapter);
listView.setOnItemClickListener(mSubjectItemClickListener);
notifyDataSetChange();
}
void initSearchHeaderView() {
View headerView = LayoutInflater.from(getActivity()).inflate(R.layout.subject_search_list_header, null);
mSearchResultView = (TextView) headerView.findViewById(R.id.maopao_search_result);
listView.addHeaderView(headerView);
}
private void searchMaopao() {
if (!TextUtils.isEmpty(mCondition)) {
showDialogLoading();
getNetwork(searchUrl + Global.encodeUtf8(mCondition), searchTag);
}
}
private void showResultView() {
mSearchResultView.setText(String.format("共搜索到 %s 个与\"%s\"相关的冒泡", maopaoObjectList.size(), mCondition));
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException {
if (searchTag.equals(tag)) {
hideProgressDialog();
maopaoObjectList.clear();
JSONArray jsonArray = respanse.optJSONObject("data").optJSONObject("tweets").optJSONArray("list");
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject json = jsonArray.getJSONObject(i);
Maopao.MaopaoObject maopaoObject = new Maopao.MaopaoObject(json);
maopaoObjectList.add(maopaoObject);
}
notifyDataSetChange();
}
}
private void notifyDataSetChange() {
if (mSubjectSearchListAdapter != null) {
mSubjectSearchListAdapter.notifyDataSetChanged();
showResultView();
}
}
}