Native Mobile App Development With Java

SearchView from ArrayList

25-Sep-2024

SearchView from ArrayList


1/  activity_main.xml



<androidx.appcompat.widget.SearchView
android:id="@+id/searchViewId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:queryHint="Search items"
android:background="#0df16e"/>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:padding="10dp"/>



2/ MyAddapter.java


private ArrayList<String> itemList;
private ArrayList<String> itemListFull;

public MyAdapter(ArrayList<String> itemList) {
this.itemList = itemList;
itemListFull = new ArrayList<>(itemList);
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(android.R.layout.simple_list_item_1, parent, false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String item = itemList.get(position);
holder.textView.setText(item);
}

@Override
public int getItemCount() {
return itemList.size();
}


public void filter(String text) {
itemList.clear();
if (text.isEmpty()) {
itemList.addAll(itemListFull);
} else {
text = text.toLowerCase();
for (String item : itemListFull) {
if (item.toLowerCase().contains(text)) {
itemList.add(item);
}
}
}
notifyDataSetChanged();
}

public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;

public ViewHolder(View view) {
super(view);
textView = view.findViewById(android.R.id.text1);
}
}
}



3/  MainActivity.Java.



 private MyAdapter adapter;
private ArrayList<String> items;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


RecyclerView recyclerView = findViewById(R.id.recyclerViewId);
recyclerView.setLayoutManager(new LinearLayoutManager(this));


items = new ArrayList<>();
items.add("Argentina");
items.add("Qatar");
items.add("Kuwait");
items.add("Korea");
items.add("Kuwait");
items.add("Afghanistan");
items.add("Japan");
items.add("Finland");
items.add("Ethiopia");
items.add("Romania");
items.add("Portugal");
items.add("Philippines");
items.add("Paraguay");
items.add("Panama");
items.add("Palau");
items.add("New Zealand");
items.add("Bangladesh");



adapter = new MyAdapter(items);
recyclerView.setAdapter(adapter);


androidx.appcompat.widget.SearchView searchView = findViewById(R.id.searchViewId);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
adapter.filter(query);
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
adapter.filter(newText);
return false;
}
});
}
}



1/  Create A New Project .







1/  Create A New Project .






Comments