public class SearchActivity extends BaseActivity implements ISearchCallback {
private static final String TAG = "SearchActivity";
private View mBackBtn;
private EditText mInputBox;
private View mSearchBtn;
private FrameLayout mResultContainer;
private SearchPresenter mSearchPresenter;
private UILoader mUILoader;
private RecyclerView mResultListView;
private AlbumListAdapter mAlbumListAdapter;
private FlowTextLayout mFlowTextLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
initView();
initEven();
initPresenter();
}
private void initPresenter() {
mSearchPresenter = SearchPresenter.getSearchPresenter();
//注册UI更新的接口
mSearchPresenter.registerViewCallback(this);
//去拿热词
mSearchPresenter.getHotWord();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mSearchPresenter != null) {
mSearchPresenter.unRegisterViewCallback(this);
mSearchPresenter = null;
}
}
private void initView() {
mBackBtn = this.findViewById(R.id.search_back);
mInputBox = this.findViewById(R.id.search_input);
mSearchBtn = this.findViewById(R.id.search_btn);
mResultContainer = this.findViewById(R.id.search_control);
if (mUILoader == null) {
mUILoader = new UILoader(this) {
@Override
protected View getSuccessView(ViewGroup container) {
return createSuccessView();
}
};
if (mUILoader.getParent() instanceof ViewGroup) {
((ViewGroup) mUILoader.getParent()).removeView(mUILoader);
}
mResultContainer.addView(mUILoader);
}
}
/**
* 创建数据请求成功的view
*
* @return
*/
private View createSuccessView() {
View resultView = LayoutInflater.from(this).inflate(R.layout.search_result_layout, null);
//显示热词
mFlowTextLayout = resultView.findViewById(R.id.recommend_hot_word_view);
mResultListView = resultView.findViewById(R.id.result_list_view);
//设置布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
mResultListView.setLayoutManager(layoutManager);
//设置适配器
mAlbumListAdapter = new AlbumListAdapter();
mResultListView.setAdapter(mAlbumListAdapter);
mResultListView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
outRect.top = UIUtil.dip2px(view.getContext(), 5);
outRect.bottom = UIUtil.dip2px(view.getContext(), 5);
outRect.left = UIUtil.dip2px(view.getContext(), 5);
outRect.right = UIUtil.dip2px(view.getContext(), 5);
}
});
return resultView;
}
private void initEven() {
mFlowTextLayout.setClickListener(new FlowTextLayout.ItemClickListener() {
@Override
public void onItemClick(String text) {
}
});
mUILoader.setOnRetryClickListener(new UILoader.OnRetryClickListener() {
@Override
public void onRetryClick() {
if (mSearchPresenter != null) {
mSearchPresenter.reSearch();
mUILoader.updateStatus(UILoader.UIStatus.LOADING);
}
}
});
mBackBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
mSearchBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//todo 去调用搜索逻辑
String keyword = mInputBox.getText().toString().trim();
if (mSearchPresenter != null) {
mSearchPresenter.doSearch(keyword);
mUILoader.updateStatus(UILoader.UIStatus.LOADING);
}
}
});
mInputBox.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) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public void onReSearchResultLoaded(List<Album> result) {
mFlowTextLayout.setVisibility(View.GONE);
mResultListView.setVisibility(View.VISIBLE);
//隐藏键盘
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mInputBox.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
if (result != null) {
if (result.size() == 0) {
if (mUILoader != null) {
mUILoader.updateStatus(UILoader.UIStatus.EMPTY);
}
} else {
//如果数据不为空就设置
mUILoader.updateStatus(UILoader.UIStatus.SUCCESS);
mAlbumListAdapter.setData(result);
}
}
}
@Override
public void onHotWordLoaded(List<HotWord> hotWordsList) {
mResultListView.setVisibility(View.GONE);
mFlowTextLayout.setVisibility(View.VISIBLE);
if (mUILoader != null) {
mUILoader.updateStatus(UILoader.UIStatus.SUCCESS);
}
LogUtils.d(TAG, "hotWords-->size" + hotWordsList.size());
List<String> hotWords = new ArrayList<>();
hotWords.clear();
for (HotWord hotWord : hotWordsList) {
String searchWord = hotWord.getSearchword();
hotWords.add(searchWord);
}
Collections.sort(hotWords);
//更新Ui
mFlowTextLayout.setTextContents(hotWords);
}
@Override
public void onLoadedMoreResult(List<Album> result, boolean isOkay) {
}
@Override
public void onRecommendWordLoaded(List<QueryResult> keyWordList) {
}
@Override
public void onError(int errorCode, String errorMsg) {
if (mUILoader != null) {
mUILoader.updateStatus(UILoader.UIStatus.NETWORK_ERROR);
}
}
}

https://www.sunofbeach.net/a/1200314266318655488
这是log。