gpt4 book ai didi

java - 如何根据与字符串的相关性来组织 ListView ?

转载 作者:行者123 更新时间:2023-12-01 15:32:30 26 4
gpt4 key购买 nike

我想知道如何根据与字符串的相关性来组织 ListView ?这在 Android 中可能吗?

所以可以说我的结果是:

“嗨,那里”“上帝保佑H”“找到你好”

字符串是“Hi”

它将根据与字符串的相关性进行组织

编辑1:我的 ListView 的自定义 ArrayAdapter:

public class MyAdapter extends ArrayAdapter<AdapterItem> {
private List<AdapterItem> items = new ArrayList<AdapterItem>();

public MyAdapter(Context context, int textviewid) {
super(context, textviewid);

}

public void addAdapterItem(AdapterItem item) {
items.add(item);
}

public int getCount() {
return items.size();
}

@Override
public AdapterItem getItem(int position) {
return ((null != items) ? items.get(position) : null);
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent){
View rowView = getLayoutInflater().inflate(R.layout.itemview, null);
TextView firstTextView = (TextView) rowView.findViewById(R.id.txtTitle);
firstTextView.setText(items.get(position).first);
// do the same with second and third
return rowView;
}

}

我的比较器和适配器项目

public class TComparator implements Comparator<AdapterItem> {
private final Collator collator = Collator.getInstance();
public int compare(AdapterItem ob1, AdapterItem ob2) {
return collator.compare(ob1.first, string);
}
}

class AdapterItem {
public String first;
public String second;
public String third;
public int fourth;

public AdapterItem(String first, String second, String third, int fourth) {
this.first = first;
this.second = second;
this.third = third;
this.fourth = fourth;
}
}

最佳答案

您可以对相关性进行启发式,然后循环遍历适配器的元素,对它们进行评分,然后根据分数对它们进行排序,然后在适配器中重新排列它们(或者也许您必须制作一个新的适配器),然后将 ListView 设置为新适配器并更新。

看起来工作量很大...有一些内置方法可以猜测人们正在尝试输入的内容,其中之一是通过搜索界面:我在这里读到了它:http://developer.android.com/guide/topics/search/search-dialog.html

编辑:

实际上,如果您使用 ArrayAdapter,则有一个 sort() 方法,您可以使用比较器对适配器进行排序: http://developer.android.com/reference/android/widget/ArrayAdapter.html

您可以使用启发式作为比较器,并以这种方式对适配器进行排序!

编辑2:

假设您的 ArrayAdapter 是 T 类型,即您的适配器如下所示:

ArrayAdapter<T> myAdapter = ...

然后你这样做:

public class TComparator implements Comparator<T> {

public int compare(T ob1, T ob2) {
if (ob1 is more relevant than ob2) {
return 1;
} else if (ob1 is less relevant than ob2) {
return -1;
} else (ob1 is of equal relevance to ob2) {
return 0;
}
}
}

如何确定相关性取决于您的任务

然后你就可以简单地做

myAdapter.sort(new TComparator());

这对适配器进行排序

关于java - 如何根据与字符串的相关性来组织 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403852/

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