/* * Copyright 2017 lizhaotailang * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.marktony.zhihudaily.search; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.widget.ContentLoadingProgressBar; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import com.marktony.zhihudaily.R; import com.marktony.zhihudaily.adapter.BookmarksAdapter; import com.marktony.zhihudaily.bean.BeanType; import com.marktony.zhihudaily.bean.DoubanMomentNews; import com.marktony.zhihudaily.bean.GuokrHandpickNews; import com.marktony.zhihudaily.bean.ZhihuDailyNews; import com.marktony.zhihudaily.interfaze.OnRecyclerViewOnClickListener; import java.util.ArrayList; /** * Created by lizhaotailang on 2016/12/25. */ public class SearchFragment extends Fragment implements SearchContract.View { private SearchContract.Presenter presenter; private SearchView searchView; private RecyclerView recyclerView; private ContentLoadingProgressBar progressBar; private BookmarksAdapter adapter; public static SearchFragment newInstance() { return new SearchFragment(); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_search_bookmarks, container, false); initViews(view); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { presenter.loadResults(query); return true; } @Override public boolean onQueryTextChange(String newText) { presenter.loadResults(newText); return true; } }); return view; } @Override public void setPresenter(SearchContract.Presenter presenter) { if (presenter != null) { this.presenter = presenter; } } @Override public void initViews(View view) { Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); ((SearchActivity)(getActivity())).setSupportActionBar(toolbar); ((SearchActivity)(getActivity())).getSupportActionBar().setDisplayHomeAsUpEnabled(true); searchView = (SearchView) view.findViewById(R.id.searchView); searchView.setIconified(false); recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); progressBar = (ContentLoadingProgressBar) view.findViewById(R.id.progressBar); } @Override public void showResults(ArrayList<ZhihuDailyNews.Question> zhihuList, ArrayList<GuokrHandpickNews.result> guokrList, ArrayList<DoubanMomentNews.posts> doubanList, ArrayList<Integer> types) { if (adapter == null) { adapter = new BookmarksAdapter(getActivity(), zhihuList, guokrList, doubanList, types); adapter.setItemListener(new OnRecyclerViewOnClickListener() { @Override public void OnItemClick(View v, int position) { int type = recyclerView.findViewHolderForLayoutPosition(position).getItemViewType(); if (type == BookmarksAdapter.TYPE_ZHIHU_NORMAL) { presenter.startReading(BeanType.TYPE_ZHIHU, position); } else if (type == BookmarksAdapter.TYPE_GUOKR_NORMAL) { presenter.startReading(BeanType.TYPE_GUOKR, position); } else if (type == BookmarksAdapter.TYPE_DOUBAN_NORMAL) { presenter.startReading(BeanType.TYPE_DOUBAN, position); } } }); recyclerView.setAdapter(adapter); } else { adapter.notifyDataSetChanged(); } } @Override public void showLoading() { progressBar.setVisibility(View.VISIBLE); } @Override public void stopLoading() { progressBar.setVisibility(View.GONE); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { getActivity().onBackPressed(); } return super.onOptionsItemSelected(item); } }