У меня есть вложенный recyclerview (вертикальный recyclerview и внутри горизонтальный recyclerview). Сделайте поисковик для горизонтального recyclerview, но в момент написания приложение останавливается. Ошибка возникает, когда я вызываю адаптер, но я не знаю, как ее решить, если бы кто-то мог помочь мне, я был бы очень признателен.
MainActicyty
adapterPeliculas_Vertical adapterPeliculas_Vertical;
adapterPeliculas_horizontal AdapterPeliculas_horizontal;
RecyclerView verticalRecyclerview;
ArrayList<Peliculas_Vertical> listaPeliculas;
ArrayList<Peliculas_horizontal> listaPeliculas2, listaPeliculas3, listaPeliculas4, listaPeliculas5,
listaPeliculas6;
BottomNavigationView bottomNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
verticalRecyclerview = findViewById(R.id.recyclerview_principal);
listaPeliculas = new ArrayList<>();
listaPeliculas2 = new ArrayList<>();
listaPeliculas3 = new ArrayList<>();
listaPeliculas4 = new ArrayList<>();
listaPeliculas5 = new ArrayList<>();
listaPeliculas6 = new ArrayList<>();
//cargar lista vertical
cargarLista();
//mostrar lista
mostrarLista();
//carga lista horizontal
cargarLista2();
}
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_actionbar, menu);
final MenuItem itemm = menu.findItem(R.id.menu_buscador);
final SearchView searchView = (SearchView) itemm.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
AdapterPeliculas_horizontal.getFilter().filter(newText);
return true;
}
});
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
return true;
}
Горизонтальный переходник
Context context;
List<Peliculas_horizontal> model2;
List<Peliculas_horizontal> model3;
public adapterPeliculas_horizontal(Context context, List<Peliculas_horizontal> model2) {
this.context = context;
this.model2 = model2;
model3 = new ArrayList<>(model2);
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view2;
LayoutInflater inflater2 = LayoutInflater.from(context);
view2 = inflater2.inflate(R.layout.item_horizontal, parent, false);
return new ViewHolder(view2);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
final Peliculas_horizontal peliculas_horizontal = model2.get(position);
holder.nombre_horizontal.setText(peliculas_horizontal.getNombre());
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, detalle_pelicula.class);
intent.putExtra("titulo", peliculas_horizontal.getTitulo());
intent.putExtra("url", peliculas_horizontal.getUrl());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return model2.size();
}
//buecador
@Override
public Filter getFilter() {
return filter;
}
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
List<Peliculas_horizontal> filterable = new ArrayList<>();
if (charSequence == null || charSequence.length() == 0) {
filterable.addAll(model3);
} else {
String flter2 = charSequence.toString().toLowerCase().trim();
for (Peliculas_horizontal item : model3) {
if (item.getNombre().toLowerCase().contains(flter2)) {
filterable.add(item);
}
}
}
FilterResults results = new FilterResults();
results.values = filterable;
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults resultss) {
model2.clear();
model2.addAll((List) resultss.values);
notifyDataSetChanged();
}
};
Вертикальный переходник
public class adapterPeliculas_Vertical extends
RecyclerView.Adapter<adapterPeliculas_Vertical.ViewHolder> {
private Context context;
ArrayList<Peliculas_Vertical> model;
public adapterPeliculas_Vertical(Context context, ArrayList<Peliculas_Vertical> model){
this.context = context;
this.model = model;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view;
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(R.layout.item_vertical, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Peliculas_Vertical peliculas_vertical = model.get(position);
String nombre = peliculas_vertical.getNombre();
ArrayList<Peliculas_horizontal> sigleitem = peliculas_vertical.getArrayList();
holder.nombre.setText(nombre);
adapterPeliculas_horizontal Horizontal = new adapterPeliculas_horizontal(context, sigleitem);
holder.recyclerView.setHasFixedSize(true);
holder.recyclerView.setLayoutManager(new
LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
holder.recyclerView.setAdapter(Horizontal);
}
@Override
public int getItemCount() {
return model.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView nombre;
RecyclerView recyclerView;
public ViewHolder(View itemview) {
super(itemview);
nombre = itemview.findViewById(R.id.textView_vertical);
recyclerView = itemview.findViewById(R.id.recyclerview_vertical2);
}
}
}
Это помечает меня ошибка.
play.downloads.downloadmovies E/AndroidRuntime: FATAL EXCEPTION: main Process: play.downloads.downloadmovies, PID: 12835 java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter play.downloads.downloadmovies.adapter.adapterPeliculas_horizontal.getFilter()' on a null object reference at play.downloads.downloadmovies.MainActivity$2.onQueryTextChange(MainActivity.java:81) at androidx.appcompat.widget.SearchView.onTextChanged(SearchView.java:1182) at androidx.appcompat.widget.SearchView$10.onTextChanged(SearchView.java:1720) at android.widget.TextView.sendOnTextChanged(TextView.java:10688) at android.widget.TextView.handleTextChanged(TextView.java:10799) at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:14175) at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1252) at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:573) at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:504) at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:502) at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:849) at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:618) at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:396) at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:7000) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
Прикрепляю изображение, чтобы его лучше понять. Нажатие на поисковик и я хочу написать останавливает приложение. введите описание изображения здесь