【问题标题】:AutoCompleteTextView issues with custom List自定义列表的 AutoCompleteTextView 问题
【发布时间】:2011-01-14 10:59:39
【问题描述】:

我正在尝试使用 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;
    }
}

}

请指出正确的方向

/干杯阿德里安

【问题讨论】:

    标签: android listview autocompletetextview


    【解决方案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);
    

    看看这个例子:Auto Complete Text View | Android Beginner Dev Tutorial

    【讨论】:

    • 但如果我将其更改为 ArrayAdapter 我将如何添加“ArrayList itemList;”到列表中?
    • 也许我错过了理解 - 你实际上有两个需要适配器的列表:一个用于列表,一个用于自动完成视图 - 我说得对吗?
    • 我的错!似乎我将“searchListAdapter”添加到列表和 textView 中。所以正如你所说,我实际上需要一个适配器 用于 TextView 和一个适配器 用于列表。现在它可以工作了,但是“建议的”字符串不适合视觉组件,它被切成两半。但我可能需要为此提出一个新问题;)。谢谢!
    • 好点 - 我调整了我的答案以反映这一点。如果您认为这回答了您的问题,请将其标记为答案(选中复选标记)。这对我们俩都有好处:-)
    • 好的,太好了!我是网站上的 n00b :)
    【解决方案2】:

    我刚想起我最近问的一个问题Trying to filter a ListView with runQueryOnBackgroundThread but nothing happens - what am I missing?。就我而言,当在文本框中输入搜索字符串时,我无法刷新列表的内容。从表面上看,这与您的问题不同,但也许您正在尝试完成相同的事情。我试图创建一个搜索活动来帮助人们为我的 WorldInfo 应用程序选择一个国家。这个想法是他们在主要活动中按下一个搜索按钮,然后查看一个国家列表,然后他们可以通过在文本框中输入来过滤这些国家/地区。然后他们可以选择他们想要的国家。

    原来这样的功能是内置在 Android 中的!通过Shawn Lauzon查看我的问题的答案。

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

    【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多