Skip to content

Instantly share code, notes, and snippets.

@anta40
Created May 9, 2020 16:11
Show Gist options
  • Save anta40/6ca3e7e4383efd38b908301e3b4bfbdc to your computer and use it in GitHub Desktop.
Save anta40/6ca3e7e4383efd38b908301e3b4bfbdc to your computer and use it in GitHub Desktop.
package com.divbyzero.app.githubusersearch;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.inputmethod.EditorInfo;
import android.widget.Toast;
import com.divbyzero.app.githubusersearch.adapter.SearchAdapter;
import com.divbyzero.app.githubusersearch.model.User;
import com.divbyzero.app.githubusersearch.viewmodel.UserViewModel;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
SearchAdapter searchAdapter;
RecyclerView recyclerView;
Context context;
int currentPage, totalPage;
boolean isLastPage, isLoading;
UserViewModel viewModel;
String who;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
setUpRecyclerView();
currentPage = 1;
isLastPage = false;
isLoading = false;
totalPage = 0;
viewModel = viewModel = new ViewModelProvider(this,
new ViewModelProvider.NewInstanceFactory()).get(UserViewModel.class);
}
private void doSearchUser(String who, int pageNum) {
totalPage = viewModel.getTotalPage();
viewModel.setSearchResult(who, pageNum);
viewModel.getSearchResult().observe(this, new Observer<ArrayList<User>>() {
@Override
public void onChanged(ArrayList<User> theList) {
searchAdapter = new SearchAdapter(context, theList);
recyclerView.setAdapter(searchAdapter);
}
});
}
private void setUpRecyclerView() {
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
List<User> userList = new ArrayList<User>();
searchAdapter = new SearchAdapter(context, userList) ;
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(searchAdapter);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if(!recyclerView.canScrollVertically(1) && dy != 0) {
currentPage++;
doSearchUser(who, currentPage);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_search, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
who = query;
currentPage = 1;
doSearchUser(query, currentPage);
//searchAdapter.getFilter().filter(query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment