Java 自动完成文本问题获取列表中的重复值?
请帮我解决这个问题: 当我在“自动完成文本”视图中搜索时,我想显示国家和代码,它工作正常,但我得到的是两个值,而不是一个值 MainActivity.java:Java 自动完成文本问题获取列表中的重复值?,java,android,autocompletetextview,Java,Android,Autocompletetextview,请帮我解决这个问题: 当我在“自动完成文本”视图中搜索时,我想显示国家和代码,它工作正常,但我得到的是两个值,而不是一个值 MainActivity.java: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] countries = new String[] {
"Allentown",
"Albuquerque","Aberdeen","Acapulco","Waco","Atlantic City",
"Marka-Amman","Pittsburgh","Augusta","Auckland","Albany",
"Amarillo","Amman","Amsterdam","Anchorage","Antwerp",
"Naples","Aqaba","Stockholm","Aspen","Asuncion"......};
String[] codes=new String[]{
"ABE","ABQ","AMS","ANC","ANR","APF","AQJ","ARN","ASE","ASU","ATH",
.............};
List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for(int i=0;i<countries.length;i++){
HashMap<String, String> curGroupMap = new HashMap<String,String>();
curGroupMap.put("country", countries[i]);
curGroupMap.put("code", codes[i]);
list.add(curGroupMap);
}
final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
SimpleAdapter adapter =
new SimpleAdapter(getBaseContext(), list, R.layout.twolist, new String[] {"code","country"}, new int[] { R.id.textView1,R.id.textView2});
textView.setAdapter(adapter);
textView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> p, View v, int pos, long id) {
Map<String, String> map = (Map<String, String>) p.getItemAtPosition(pos);
String itemName = map.get("code");
textView.setText(itemName);
}
});
}
}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串[]国家/地区=新字符串[]{
“艾伦镇”,
“阿尔伯克基”、“阿伯丁”、“阿卡普尔科”、“韦科”、“大西洋城”,
“马尔卡·安曼”、“匹兹堡”、“奥古斯塔”、“奥克兰”、“奥尔巴尼”,
“阿马里洛”、“安曼”、“阿姆斯特丹”、“安克雷奇”、“安特卫普”,
“那不勒斯”、“亚喀巴”、“斯德哥尔摩”、“阿斯彭”、“亚松森”;
字符串[]代码=新字符串[]{
“ABE”、“ABQ”、“AMS”、“ANC”、“ANR”、“APF”、“AQJ”、“ARN”、“ASE”、“ASU”、“ATH”,
.............};
列表=新的ArrayList();
对于(int i=0;i
您使用的是:
R.id.textView1,R.id.textView2
因此,它将在Textview
s中显示它。您可以在实现中使用此代码来删除列表中的重复项
List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for(int i=0;i<countries.length;i++){
HashMap<String, String> curGroupMap = new HashMap<String,String>();
curGroupMap.put("country", countries[i]);
curGroupMap.put("code", codes[i]);
list.add(curGroupMap);
}
// adde elements to list, including duplicates
HashSet hs = new HashSet();
hs.addAll(list);
list.clear();
list.addAll(hs);
List List=new ArrayList();
对于(int i=0;i我面临同样的问题,但这个问题的简单答案是,您通过AutoCompleteTextView中的适配器填充的列表包含重复项。因为AutoComplete始终只填充唯一的数据。yeah@Arju,但我会在列表中显示代码和国家/地区,以便在文本框和我尝试使用textview 1时也没有给出另一个textview,在这种情况下,它只附加代码,而不附加国家/地区。因此,请检查上面的图像并解决它。@Danny这是一个地狱般的问题,我正在一步一步地尝试它。我给了你一个否决票,只是因为那个糟糕的格式。@abppletic只有一行代码,它是可读的。是否编辑了格式@ViswanathLekshmanan我编辑它是为了格式化,但是你努力使它可读(不,它根本不可读)值得投反对票。我无意与你进一步讨论这个问题。更新了上面的代码,但现在我仍然得到了重复的值问题没有解决:(@PratikHi@Danny查看这篇帖子的答案你需要使用自定义适配器进行过滤是的,但是有没有什么方法可以让API只显示不同的值,它不应该得到重复的值,你可以发布简单的逻辑@PratikSo解决方案是什么?我遇到了这个问题,所以我的列表中只有唯一的值。所以您的AutoCompleteTextView不会显示任何重复项。
R.id.textView1,R.id.textView2
List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
for(int i=0;i<countries.length;i++){
HashMap<String, String> curGroupMap = new HashMap<String,String>();
curGroupMap.put("country", countries[i]);
curGroupMap.put("code", codes[i]);
list.add(curGroupMap);
}
// adde elements to list, including duplicates
HashSet hs = new HashSet();
hs.addAll(list);
list.clear();
list.addAll(hs);