我发现在过滤器上的解决方案ListView,并SearchView在RecyclerView单独的,但我想将它们结合起来.它甚至可能吗?
我需要实现一个基于EditText我的搜索功能RecyclerView.键入时必须过滤列表.
这是代码:
DisplayAdapter.java这是适配器
public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.MyViewHolder>{
private List<DataHolder> displayedList;
public class MyViewHolder extends RecyclerView.ViewHolder{
public TextView english_d;
public MyViewHolder(View view){
super(view);
english_d = (TextView) view.findViewById(R.id.engword);
}
}
public DisplayAdapter(List<DataHolder> displayedList){
this.displayedList = displayedList;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int position) {
// create a layout
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
DataHolder content = displayedList.get(position);
holder.english_d.setText(content.getEnglish());
}
@Override
public int …Run Code Online (Sandbox Code Playgroud) 我正在提高应用程序的稳定性和性能,但现在我遇到了来自 Android Studio 的警告。请考虑以下 Adapter 类:
private class CoinsAdapter(private val fragment: CoinFragment, private val coins: List<Coin>): RecyclerView.Adapter<CoinsAdapter.ViewHolder>(), Filterable {
private val filter = ArrayList(coins)
override fun onCreateViewHolder(parent: ViewGroup, position: Int): ViewHolder {
val binding = ItemCoinBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val coin = filter[position]
holder.binding.coinImage.setImageResource(coin.image)
holder.binding.coinText.text = builder.toString()
}
override fun getItemCount() = filter.size
override fun getFilter() = object : Filter() {
override fun performFiltering(constraint: CharSequence): FilterResults {
if (constraint.length < 2) …Run Code Online (Sandbox Code Playgroud) 我正试图在我身上实施EmptyView,RecyclerView Adapter但我没有得到任何结果.
我实施了:
if (viewType == EMPTY_VIEW) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.empty_view, parent, false);
EmptyViewHolder evh = new EmptyViewHolder(v);
return evh;
}
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.data_row, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
Run Code Online (Sandbox Code Playgroud)
但它不允许我编译,因为它们是不同的ViewHolder,因为我创建了两个ViewHolder类,但他们extends Recycler.ViewHolder所以我没有得到它...
我正在尝试这样做,因为我有一个SearchView,我想要当列表为空它显示一个EmptyView,我已经得到它以编程方式做它但我更喜欢添加像一个layout因为我不知道那么多怎么样放置TextViews并以Buttons编程方式.
如果我放
return dataList.size() > 0 ? dataList.size() : 1;
Run Code Online (Sandbox Code Playgroud)
它给了我错误,因为索引是0.
我已经调试了viewType并且始终是1,那么它将不会加入if条件......
深入Android我发现了这个:
/** …Run Code Online (Sandbox Code Playgroud) 目前,我已经开发了一个Activity使用RecyclerView搜索功能显示数据列表(如image_1所示).
我想在工具栏中添加过滤选项,类似于Youtube应用中的过滤器(请参阅image_2).任何人都可以给我提供易于实现的线索吗?UI设计和业务逻辑.
知道如何实现过滤器对话框窗口(见image_3)?我应该使用AlertDialog或者还有其他更好的选择吗?
我刚接触到android并且我被困在一些我认为很简单但我感到困惑的东西..我需要在动作栏/工具栏中但不是在我的Relativelayout中制作自定义searchView.问题是我不知道如何定制背景,textinput颜色,XML中的搜索图标颜色,或只是他们的属性.目前我在手机上,无法显示我的代码.有谁告诉我如何定制它?也许向我展示我可以遵循的任何教程?提前致谢 !!!!