Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PokedexAdapter extends RecyclerView.Adapter<PokedexAdapter.PokedexViewHolder> implements Filterable {
- private List<Pokemon> pokemon = new ArrayList<>();
- private List<Pokemon> filtered = new ArrayList<>();
- private RequestQueue requestQueue;
- public static class PokedexViewHolder extends RecyclerView.ViewHolder {
- public LinearLayout containerView;
- public TextView textView;
- public PokedexViewHolder(View view) {
- super(view);
- containerView = view.findViewById(R.id.pokedex_row);
- textView = view.findViewById(R.id.pokedex_row_text_view);
- containerView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Pokemon current = (Pokemon) containerView.getTag();
- Intent intent = new Intent(v.getContext(), PokemonActivity.class);
- intent.putExtra("url", current.getUrl());
- v.getContext().startActivity(intent);
- }
- });
- }
- }
- public PokedexAdapter(Context context) {
- requestQueue = Volley.newRequestQueue(context);
- loadPokemon();
- }
- public void loadPokemon() {
- String url = "https://pokeapi.co/api/v2/pokemon?limit=151";
- JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
- @Override
- public void onResponse(JSONObject response) {
- try {
- JSONArray results = response.getJSONArray("results");
- for (int i = 0; i < results.length(); i++) {
- JSONObject result = results.getJSONObject(i);
- String name = result.getString("name");
- pokemon.add(new Pokemon(
- name.substring(0, 1).toUpperCase() + name.substring(1),
- result.getString("url")
- ));
- }
- filtered = pokemon;
- notifyDataSetChanged();
- } catch (JSONException e) {
- Log.e("cs50", "Json error", e);
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- Log.e("cs50", "Pokemon list error", error);
- }
- });
- requestQueue.add(request);
- }
- @Override
- public PokedexViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.pokedex_row, parent, false);
- return new PokedexViewHolder(view);
- }
- @Override
- public void onBindViewHolder(@NonNull PokedexViewHolder holder, int position) {
- Pokemon current = filtered.get(position);
- holder.textView.setText(current.getName());
- holder.containerView.setTag(current);
- }
- @Override
- public Filter getFilter() {
- return new PokemonFilter();
- }
- private class PokemonFilter extends Filter{
- @Override
- protected FilterResults performFiltering(CharSequence constraint) {
- FilterResults results = new FilterResults();
- String filterString = constraint.toString().toLowerCase();
- if (filterString.isEmpty()){
- results.values = pokemon;
- results.count = pokemon.size();
- } else {
- List<Pokemon> filteredPokemon = new ArrayList<>();
- for (Pokemon item : pokemon) {
- if (item.getName().toLowerCase().contains(filterString)) {
- filteredPokemon.add(item);
- }
- }
- results.values = filteredPokemon;
- results.count = filteredPokemon.size();
- }
- return results;
- }
- @Override
- protected void publishResults(CharSequence constraint, FilterResults results) {
- filtered = (List<Pokemon>) results.values;
- notifyDataSetChanged();
- }
- }
- @Override
- public int getItemCount() {
- return filtered.size();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement