gpt4 book ai didi

java - ArrayList过滤不起作用: Android

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:59 25 4
gpt4 key购买 nike

我有一个显示公司列表的数组列表。每家公司都有与其相关的城镇名称。我所做的是为每个城镇名称创建按钮,这样当我单击任何城镇名称时,应该过滤 ArrayList,并且只显示具有该城镇名称的公司。

我正在创建类似的按钮,

        stringList.add(tempList.get(n).getTownName());
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 60));
btnTag.setText(stringList.get(k));
btnTag.setBackgroundResource(R.drawable.alpha_button_selector);
btnTag.setClickable(true);
townLayout.addView(btnTag);

单击按钮后,我将调用过滤数据的方法,

        btnTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
locationFilter(stringList,length);
}
});

为了过滤数据,我正在创建一个新的 ArrayList 来存储过滤后的数据,例如,

        ArrayList<CompanySearchResult> secondList = new ArrayList<CompanySearchResult>();

for (CompanySearchResult a : tempList) {
for (int k = 0; k < length; k++) {

if (a.getTownName.equalsIgnoreCase(stringList.get(k))) {
secondList.add(a);
}
}
}

tempList.clear();
tempList.addAll(secondList);

我实际上想做的是单击按钮时根据城镇名称过滤临时列表。

我对此进行了研究,但无法解决该问题。谁能告诉我我做错了什么以及如何过滤列表。

最佳答案

这里的问题是,由于按钮是根据城镇名称的数量(消除重复项)以编程方式创建的,因此 stringList.get(k) 没有为我提供与单击的按钮正确对应的城镇名称。

因此,单击按钮时,我在按钮显示城镇名称时获取了按钮中的文本,然后将其传递给过滤数据的方法,

    btnTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CharSequence name = btnTag.getText();
locationFilter(name);
}
});

在我的过滤方法中,我更改为,

        ArrayList<ACompanyForSearchResult> filtered = new ArrayList<ACompanyForSearchResult>();

for (ACompanyForSearchResult town : tempList) {

if (town.getTownName().equals(name)) {
filtered.add(town);
}
}

tempList.clear();
tempList.addAll(filtered);
listAdapter.notifyDataSetChanged();

关于java - ArrayList过滤不起作用: Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45564832/

25 4 0