Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动完成文本问题获取列表中的重复值?_Java_Android_Autocompletetextview - Fatal编程技术网

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

请帮我解决这个问题:

当我在“自动完成文本”视图中搜索时,我想显示国家和代码,它工作正常,但我得到的是两个值,而不是一个值

MainActivity.java:

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);