This is my project. I want to add searching option with filtering but can't. Please help me. I am a slow new learner. I tried but couldn't find out the solution. How can i active my searching option. Sorry for my bad english.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/building"
tools:context=".MainActivity">
<androidx.appcompat.widget.SearchView
android:id="@+id/searchViewId"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/search_view_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:elevation="@dimen/cardview_default_elevation"
app:queryHint="search here..."/>
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:listSelector="#62caaf"
android:layout_marginTop="70dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp">
</GridView>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity
package com.example.newvisacheckallcountry;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
import android.widget.SearchView;
public class MainActivity extends AppCompatActivity {
int[] flags = {R.drawable.australia,R.drawable.austria,R.drawable.argentina,
R.drawable.armenia,R.drawable.belgium,R.drawable.brazil,R.drawable.bangladesh,
R.drawable.belarus,R.drawable.brunei,R.drawable.canada,R.drawable.cameroon,R.drawable.china};
String[] countryNames;
private GridView gridView;
private SearchView searchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
searchView = findViewById(R.id.searchViewId);
countryNames = getResources().getStringArray(R.array.country_names);
gridView = findViewById(R.id.gridView);
CustomAdapter adapter = new CustomAdapter(this, countryNames,flags);
gridView.setAdapter(adapter );
}
}
CustomAdapter
package com.example.newvisacheckallcountry;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomAdapter extends BaseAdapter {
Context context;
int[] flags;
String[] countryNames;
private LayoutInflater inflater;
CustomAdapter(Context context,String[] countryNames,int[] flags){
this.context = context;
this.countryNames = countryNames;
this.flags = flags;
}
@Override
public int getCount() {
return countryNames.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.sample_view,parent,false);
}
ImageView imageView = convertView.findViewById(R.id.imagViewId);
TextView textView = convertView.findViewById(R.id.textViewId);
imageView.setImageResource(flags[position]);
textView.setText(countryNames[position]);
return convertView;
}
}
sample_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="10dp"
android:elevation="@dimen/cardview_compat_inset_shadow"
app:layout_constraintCircleRadius="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
android:padding="5dp">
<ImageView
android:id="@+id/imagViewId"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:src="@drawable/australia"/>
<TextView
android:id="@+id/textViewId"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Australia"
android:layout_gravity="center_horizontal"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
strings.xml
<resources>
<string name="app_name">NewVisaCheckAllCountry</string>
<string-array name="country_names">
<item>Australia</item>
<item>Austria</item>
<item>Argentina</item>
<item>Armenia</item>
<item>Belgium</item>
<item>Brazil</item>
<item>Bangladesh</item>
<item>Belarus</item>
<item>Brunei</item>
<item>Canada</item>
<item>Cameroon</item>
<item>China</item>
</string-array>
</resources>
here is my project. thank you.