Created
May 9, 2020 16:11
-
-
Save anta40/6ca3e7e4383efd38b908301e3b4bfbdc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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