在我的应用程序中,我应该从服务器获得一些list
,我想显示此列表。
我已经编写了以下代码:
private String[] mostlyMatchedKeywordsStrings;
mostlyMatchedKeywordsStrings = searchResponse.getData().getMostlyMatchedKeywordsText();
cloudChipList.clear();
fullSearchMini_chipCloud.removeAllViews();
for (int i = 0; i < mostlyMatchedKeywordsStrings.length; i++) {
cloudChipList.add(mostlyMatchedKeywordsStrings[i]);
if (i >= mostlyMatchedKeywordsStrings.length - 2) {
fullSearchMini_didYouMeanLay.setVisibility(View.VISIBLE);
fullSearchMini_chipCloud.addChip(mostlyMatchedKeywordsStrings[i]);
Log.e("searchKeys", mostlyMatchedKeywordsStrings[i]);
fullSearchMini_chipCloud.setChipListener(new ChipListener() {
@Override
public void chipSelected(int i) {
try {
Log.e("searchKeys", "new : " + mostlyMatchedKeywordsStrings[i]);
}
catch (Exception e) {
}
}
@Override
public void chipDeselected(int i) {
}
});
}
}
当我向用户显示此数据时,它是正确的并显示数据,但是,当我点击此项时,它会向我显示另一个项目!
在Logcat中,它会显示以下项目:
searchKeys: Recep Ivedik 5
但是当我点击这个项目时,它会在logcat中显示另一个项目:
searchKeys: new : Recep Ivedik 3
要显示该项目并单击它,我使用此代码mostlyMatchedKeywordsStrings[i]
,为什么在logCat中显示另一项单击此项目时?
答案 0 :(得分:0)
我认为你的问题是由于数组错误混合造成的。
我从来没有使用过ChipCloud,但我认为如果你只为你的mostlyMatchedKeywordsStrings
数组的某些项注册监听器,那么注册的数组会有不同的索引。
例如,如果您有mostlyMatchedKeywordsStrings
个5项(0 =&gt; 1,1 =&gt; 2,2 =&gt; 3,3 =&gt; 4,4 =&gt; 5)并且您只注册它的最后两项,然后在仅有两个索引的数组中注册ChipListener cosists(0 =&gt; 4,1 =&gt; 5)。如您所见,您有2个具有非对齐索引的数组。您收到i
的{{1}}相对于第二个数组,但您可以使用它来访问第一个数组中的数据。
我不确定这是不是问题,让我知道我是否已经做好了预测:)
试试这段代码:
public void chipSelected(int i)