gpt4 book ai didi

android-recyclerview - 如何在 android 中将 AutoCompleteTextView 与 RecyclerView.Adapter 一起使用,但不与 ArrayAdapter 一起使用

转载 作者:行者123 更新时间:2023-12-03 23:52:06 25 4
gpt4 key购买 nike

我有一个需要实现自动建议的情况。为此,我一直在尝试使用自定义的 RecyclerView.Adapter。但问题是,AutoCompleteTextView 似乎是为 BaseAdapter 及其子类制作的。
因此,不接受适配器。还有其他方法,我可以将 RecyclerView 适配器与 AutoCompleteTextView 一起使用。 ArrayListAdapter 或 BaseAdapter 是 AutCompleteTextView 的唯一解决方案吗?

最佳答案

AutoCompleteTextView需要 ListAdapter那也是Filterable .您可以通过在 RecyclerView.Adapter 周围有一个包装类来实现这一点。扩展 BaseAdapter并将调用委托(delegate)给底层 RecyclerView.Adapter .这是一个例子:

public class RecyclerBaseAdapter<VH extends RecyclerView.ViewHolder> 
extends BaseAdapter implements Filterable {

private final RecyclerView.Adapter<VH> mAdapter;

public RecyclerBaseAdapter(RecyclerView.Adapter<VH> adapter) {
mAdapter = adapter;
}

@Override
public int getItemViewType(int position) {
return mAdapter.getItemViewType(position);
}

@Override
public int getCount() {
return mAdapter.getItemCount();
}

@Override
public Object getItem(int position) {
// not supported
return null;
}

@Override
public long getItemId(int position) {
return mAdapter.getItemId(position);
}

@SuppressWarnings("unchecked")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
VH holder;
if (convertView == null) {
holder = mAdapter.createViewHolder(parent, getItemViewType(position));
convertView = holder.itemView;
convertView.setTag(holder);
} else {
holder = (VH) convertView.getTag();
}
mAdapter.bindViewHolder(holder, position);
return holder.itemView;
}

@Override
public Filter getFilter() {
// TODO: return a real filter
return null;
}
}
现在你可以做 mAutoCompleteTextView.setAdapter(new RecyclerBaseAdapter(mRecyclerViewAdapter)) .我只在 Spinner 上进行了测试,但它也应该适用于您的情况。

关于android-recyclerview - 如何在 android 中将 AutoCompleteTextView 与 RecyclerView.Adapter 一起使用,但不与 ArrayAdapter 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com