package com.tenclouds.loadingadaptersample.activities; import android.app.SearchManager; import android.content.Context; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.tenclouds.infiniterecyclerview.InfiniteRecyclerView; import com.tenclouds.loadingadaptersample.MtgCardsInfiniteAdapter; import com.tenclouds.loadingadaptersample.R; import com.tenclouds.loadingadaptersample.SearchCardsLoader; import io.magicthegathering.javasdk.resource.Card; public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, MenuItemCompat.OnActionExpandListener, MtgCardsInfiniteAdapter.ItemSelectedListener, SearchCardsLoader.ShowErrorInterface { private MtgCardsInfiniteAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InfiniteRecyclerView recyclerView = (InfiniteRecyclerView) findViewById(R.id.recycler); adapter = new MtgCardsInfiniteAdapter(this, new SearchCardsLoader(null, this), this); recyclerView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the options menu from XML MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); MenuItem searchMenuItem = menu.findItem(R.id.menu_search); SearchView searchView = (SearchView) searchMenuItem.getActionView(); searchView.setSearchableInfo(searchManager. getSearchableInfo(getComponentName())); searchView.setOnQueryTextListener(this); MenuItemCompat.setOnActionExpandListener(searchMenuItem, this); return true; } @Override public boolean onQueryTextSubmit(String query) { adapter.replaceItemsLoader(new SearchCardsLoader(query, this)); return false; } @Override public boolean onQueryTextChange(String newText) { return false; } @Override public boolean onMenuItemActionExpand(MenuItem item) { return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { adapter.replaceItemsLoader(new SearchCardsLoader("", this)); return true; } @Override public void onItemSelected(Card card) { CardDetailActivity.start(this, card); } @Override public void showError(String errorText) { runOnUiThread(() -> Toast.makeText(this, errorText, Toast.LENGTH_LONG).show()); } }