razituli

Untitled

Oct 14th, 2021
771
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.example.basicandroid.day4.recyclerview;
  2.  
  3. import android.app.SearchManager;
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.text.TextUtils;
  7. import android.util.Log;
  8. import android.view.LayoutInflater;
  9. import android.view.Menu;
  10. import android.view.MenuInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.SearchView;
  14.  
  15. import androidx.annotation.NonNull;
  16. import androidx.annotation.Nullable;
  17. import androidx.fragment.app.Fragment;
  18. import androidx.recyclerview.widget.LinearLayoutManager;
  19. import androidx.recyclerview.widget.RecyclerView;
  20.  
  21. import com.example.basicandroid.R;
  22. import com.example.basicandroid.day3.LinearLayoutFragment;
  23.  
  24. import java.lang.reflect.Array;
  25. import java.util.ArrayList;
  26.  
  27. public class RecyclerViewFragment extends Fragment implements ItemAdapter.CallbackAdapter {
  28.  
  29.     private RecyclerView recyclerView;
  30.     private ItemAdapter itemAdapter;
  31.     private ArrayList<Item> items = Item.generateDateItem();
  32.  
  33.     public static RecyclerViewFragment newInstance() {
  34.         return new RecyclerViewFragment();
  35.     }
  36.  
  37.     @Override
  38.     public void onCreate(Bundle savedInstanceState) {
  39.         super.onCreate(savedInstanceState);
  40.         setHasOptionsMenu(true);
  41.     }
  42.  
  43.     @Nullable
  44.     @Override
  45.     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
  46.                              @Nullable Bundle savedInstanceState) {
  47.         return inflater.inflate(R.layout.day4_recyclerview_container, container, false);
  48.     }
  49.  
  50.     @Override
  51.     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
  52.         super.onViewCreated(view, savedInstanceState);
  53.         recyclerView = view.findViewById(R.id.recyclerview);
  54.         itemAdapter = new ItemAdapter(items,this::onClick);
  55.         recyclerView.setAdapter(itemAdapter);
  56.         recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
  57.     }
  58.  
  59.     @Override
  60.     public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
  61.         super.onCreateOptionsMenu(menu, inflater);
  62.         SearchManager sm = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
  63.         SearchView sv = (SearchView) menu.findItem(R.id.search).getActionView();
  64.         sv.setSearchableInfo(sm.getSearchableInfo(getActivity().getComponentName()));
  65.         sv.setIconifiedByDefault(true);
  66.         sv.setMaxWidth(Integer.MAX_VALUE);
  67.         sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
  68.             @Override
  69.             public boolean onQueryTextSubmit(String s) {
  70.                 notifyList(s);
  71.                 return true;
  72.             }
  73.             @Override
  74.             public boolean onQueryTextChange(String s) {
  75.                 if (TextUtils.isEmpty(s)){
  76.                     resetData();
  77.                     return true;
  78.                 }
  79.                 return false;
  80.             }
  81.         });
  82.     }
  83.  
  84.     private void resetData(){
  85.         items.clear();
  86.         items.addAll(Item.generateDateItem());
  87.         itemAdapter.notifyDataSetChanged();
  88.     }
  89.  
  90.     private void notifyList(String query){
  91.         Item item = doSearchItems(query);
  92.         if (item != null) {
  93.             items.clear();
  94.             items.add(item);
  95.             itemAdapter.notifyDataSetChanged();
  96.         }
  97.     }
  98.  
  99.     private Item doSearchItems(String query){
  100.         Item foundItem = null;
  101.         for (Item item:items) {
  102.             if (item.getName().equalsIgnoreCase(query)) {
  103.                 foundItem = item;
  104.                 break;
  105.             }
  106.         }
  107.         return foundItem;
  108.     }
  109.  
  110.     @Override
  111.     public void onClick(Item item) {
  112.         Log.e("TAG", "onClick: "+item );
  113.     }
  114. }
  115.  
RAW Paste Data