2

我正在尝试使用 AutoCompleteTextView 创建 ListActivity。Listview 有 listItems,它由一个 ImageView 和 2 个 TextViews 组成。除了自动完成字符串之外,一切都运行良好。我正在使用 ArrayAdapter,但我不知道如何设置字符串(国家)。这是一些代码。

公共类 SearchActivity 扩展 ListActivity {

static final String[] COUNTRIES = new String[] {
      "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
      "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
      "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
      "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
      "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
      "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory",
      "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi",
      "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
      "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
      "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
      "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic"
    };

private AutoCompleteTextView    searchView;
private ListView                mListView;
private ArrayList<MyItem>       itemList            = new ArrayList<MyItem>();
private ListItemAdapter         searchListAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    searchView = (AutoCompleteTextView) findViewById(R.id.search_text);
    searchView.setAdapter(searchListAdapter);

    searchListAdapter = new ListItemAdapter(this, R.layout.search_row, itemList);
    setListAdapter(searchListAdapter);

    mListView = getListView();
    mListView.setTextFilterEnabled(false);
}

/**
 * This class is used to for the list objects.
 */
private class ListItemAdapter extends ArrayAdapter<MyItem> {

    private ArrayList<MyItem>   bevs;
    private MyItem          bevItem;

    private TextView                nameView;
    private TextView                descView;
    private ImageView               imageView;

    public ListItemAdapter(Context context, int textViewResourceId,
            ArrayList<MyItem> itemList) {
        super(context, textViewResourceId, itemList);
        this.bevs = itemList;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;


    /* Update the views */

        return view;
    }
}

}

请指出我正确的方向

/干杯阿德里安

4

2 回答 2

1

我认为您缺少的重要一点是为国家数组实际创建一个适配器。

ArrayAdapter<String> autocompleteCountriesAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, COUNTRIES);

然后更改自动完成文本视图的代码以使用它:

searchView = (AutoCompleteTextView) findViewById(R.id.search_text);
searchView.setAdapter(autocompleteCountriesAdapter);

查看此示例:自动完成文本视图 | Android 初学者开发教程

于 2011-01-14T11:21:37.593 回答
0

我只记得我最近提出的一个问题尝试使用 runQueryOnBackgroundThread 过滤 ListView 但没有任何反应 - 我错过了什么?. 就我而言,当在文本框中输入搜索字符串时,我无法刷新列表的内容。从表面上看,这与您的问题不同,但也许您正在尝试完成相同的事情。我试图创建一个搜索活动来帮助人们为我的 WorldInfo 应用程序选择一个国家。这个想法是他们在主要活动中按下一个搜索按钮,然后查看一个国家列表,然后他们可以通过在文本框中输入来过滤这些国家。然后他们可以选择他们想要的国家。

事实证明,这样的设施是内置在 Android 中的!查看Shawn Lauzon对我的问题的回答。

需要一些时间才能正确集成到系统搜索工具中,但体验要好得多。

于 2011-01-14T11:29:30.900 回答