如何解决如何将记录列表插入适配器以在 Android Studio 中进行过滤功能?
我在通过 ListBooks.java
文件中的适配器解决列表问题时遇到了一些困难。
我所指的问题在同一个文件中的以下行中:
recyclerAdapter = new BookAdapter (list_books);
问题以如下消息的形式出现在这一行:
error: the DonoAdapter constructor in the BookAdapter class cannot be applied to certain types;
required: List <Book>,Context
Found: List <Book>
reason: real and formal argument lists differ in length
可能的错误出现在同一个文件中的 list_books = new ArrayList<>();
行上我需要在其中插入应用列表中存在的记录 ArrayList<>()
,但是我不知道如何解决。
ListBooks.java
public class ListBooks extends AppCompatActivity {
RecyclerView recyclerView;
BookAdapter recyclerAdapter;
List<Book> list_books;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_listar_livros);
list_books = new ArrayList<>();
recyclerView = findViewById(R.id.recyclerView);
recyclerAdapter = new BookAdapter(list_books);
recyclerView.setAdapter(recyclerAdapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
DB db = new DB(this);
List<Book> books = db.ReadBooks();
if (books.size() > 0){
BookAdapter bookadapter = new BookAdapter(books,ListBooks.this);
recyclerView.setAdapter(bookadapter);
} else {
Toast.makeText(this,"No books in database.",Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.search_book,menu);
MenuItem menuItem = menu.findItem(R.id.s_book);
SearchView searchView = (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
recyclerAdapter.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
BookAdapter.java
public class BookAdapter extends RecyclerView.Adapter<BookAdapter.ViewHolder> implements Filterable {
List<Book> books;
List<Book> books2;
Context context;
DB db;
public BookAdapter(List<Book> books,Context context) {
this.books = books;
this.books2 = new ArrayList<>(books);
this.context = context;
bd = new BD(context);
}
@Override
public Filter getFilter() {
return filter;
}
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
List<Book> filter_books = new ArrayList<>();
if (charSequence.toString().isEmpty()){
filter_books.addAll(books2);
} else {
for (Book book: books2){
if (book.getTitle_book().toLowerCase().contains(charSequence.toString().toLowerCase())){
filter_book.add(book);
}
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = filter_books;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint,FilterResults filterResults) {
books.clear();
books.addAll((Collection<? extends Book>) filterResults.values);
notifyDataSetChanged();
}
};
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。