5

在此处输入图像描述

请帮我解决这个问题:

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

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

}

我用于获取列表视图的 xml 是twolist.xml:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="horizontal" >

    <TextView
     android:id="@+id/textView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="TextView" />
   <TextView
      android:id="@+id/a"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="-" />

  <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:text="TextView" />

4

3 回答 3

0
 new SimpleAdapter(getBaseContext(), 
                   list, R.layout.twolist,
                   new String[] {"code","country"},
                   new int[] { R.id.textView1,R.id.textView2});

你在这里使用:

R.id.textView1,R.id.textView2

所以它会在两个Textviews中显示它。

于 2013-03-30T06:11:58.543 回答
0

您在实现中使用此代码来删除列表中的重复项

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);
于 2013-03-30T06:17:01.617 回答
0

我遇到了同样的问题,但这个问题的简单答案是您通过 AutoCompleteTextView 中的适配器填充的列表包含重复项。因为自动完成将始终只填充唯一的数据。

于 2016-12-20T13:43:42.617 回答