package com.metis.meishuquan.activity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.metis.base.activity.TitleBarActivity;
import com.metis.base.manager.RequestCallback;
import com.metis.base.module.Footer;
import com.metis.base.utils.SystemUtils;
import com.metis.base.widget.adapter.delegate.FooterDelegate;
import com.metis.base.widget.callback.OnScrollBottomListener;
import com.metis.meishuquan.R;
import com.metis.meishuquan.manager.DiscoveryManager;
import com.metis.meishuquan.module.College;
import com.metis.msnetworklib.contract.ReturnInfo;
import java.util.ArrayList;
import java.util.List;
public class ExamJoinSearchActivity extends TitleBarActivity {
private View mSearchView = null;
private EditText mSearchContent = null;
private ImageView mCloseBtn = null;
private RecyclerView mResultRv = null;
private ExamJoinActivity.CollegeAdapter mCollegeAdapter = null;
private int mPage = 0;
private Footer mFooter = new Footer();
private FooterDelegate mFooterDelegate = new FooterDelegate(mFooter);
private boolean isLoading = false, noMore = false;
private String mRequestId = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exam_join_search);
mResultRv = (RecyclerView)findViewById(R.id.exam_join_search_result_recycler_view);
mResultRv.setLayoutManager(new LinearLayoutManager(this));
mCollegeAdapter = new ExamJoinActivity.CollegeAdapter(this);
mResultRv.setAdapter(mCollegeAdapter);
mResultRv.addOnScrollListener(new OnScrollBottomListener() {
@Override
public void onScrollBottom(RecyclerView recyclerView, int newState) {
String name = mSearchContent.getText().toString();
if (!isLoading && !noMore && !TextUtils.isEmpty(name)) {
loadCollege(name);
}
}
});
mSearchView = LayoutInflater.from(this).inflate(R.layout.layout_exam_join_search_editable, null);
getTitleBar().setCenterView(mSearchView);
mSearchContent = (EditText)mSearchView.findViewById(R.id.search_content);
mCloseBtn = (ImageView)mSearchView.findViewById(R.id.search_close_flag);
mSearchContent.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_ENTER) {
String name = mSearchContent.getText().toString();
if (TextUtils.isEmpty(name)) {
Toast.makeText(ExamJoinSearchActivity.this, R.string.toast_empty_search_content, Toast.LENGTH_SHORT).show();
return true;
}
loadCollege(name);
return true;
}
return false;
}
});
mSearchContent.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mPage = 0;
if (mCollegeAdapter.getItemCount() > 0) {
mCollegeAdapter.clearDataList();
mCollegeAdapter.notifyDataSetChanged();
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
mSearchContent.requestFocus();
mCloseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mSearchContent.setText("");
}
});
SystemUtils.showIME(this, mSearchView);
}
private void loadCollege (String name) {
if (mPage == 0 && mCollegeAdapter.getItemCount() > 0) {
mCollegeAdapter.clearDataList();
mCollegeAdapter.notifyDataSetChanged();
}
mFooter.setState(Footer.STATE_WAITTING);
if (!mCollegeAdapter.endWith(mFooterDelegate)) {
mCollegeAdapter.addDataItem(mFooterDelegate);
}
mCollegeAdapter.notifyDataSetChanged();
mRequestId = DiscoveryManager.getInstance(this).getCollegeList(0, mPage, name, new RequestCallback<List<College>>() {
@Override
public void callback(ReturnInfo<List<College>> returnInfo, String callbackId) {
if (!mRequestId.equals(callbackId)) {
return;
}
if (returnInfo != null && returnInfo.isSuccess()) {
mPage++;
List<ExamJoinActivity.CollegeDelegate> delegates = new ArrayList<ExamJoinActivity.CollegeDelegate>();
List<College> colleges = returnInfo.getData();
final int length = colleges.size();
if (length > 0) {
for (int i = 0; i < length; i++) {
delegates.add(new ExamJoinActivity.CollegeDelegate(colleges.get(i)));
}
mFooter.setState(Footer.STATE_SUCCESS);
if (mCollegeAdapter.endWith(mFooterDelegate)) {
mCollegeAdapter.addDataList(mCollegeAdapter.getItemCount() - 1, delegates);
} else {
mCollegeAdapter.addDataList(delegates);
mCollegeAdapter.addDataItem(mFooterDelegate);
}
} else {
mFooter.setState(Footer.STATE_NO_MORE);
if (!mCollegeAdapter.endWith(mFooterDelegate)) {
mCollegeAdapter.addDataItem(mFooterDelegate);
}
}
} else {
mFooter.setState(Footer.STATE_FAILED);
if (!mCollegeAdapter.endWith(mFooterDelegate)) {
mCollegeAdapter.addDataItem(mFooterDelegate);
}
}
mCollegeAdapter.notifyDataSetChanged();
}
});
}
@Override
public boolean showAsUpEnable() {
return true;
}
}