猿来是9527 2014-08-11 07:30 采纳率: 0%
浏览 1208

android 搜索框自动提示API

各位资深前辈们、朋友们,问题是这样的:

1.希望实现以下功能:在edittext中输入城市名称,然后弹出listview,列出用户可能希望输入的完整的城市名称,如输入“北”,listview中列出 “北京” “北川” “北海道” 等,由于输入内容无法全部预知,所以无法采用本地数据库存储信息的方式,希望可以根据输入内容在网络上进行查找相关字符串,并以json或者xml格式返回结果。
2.现在不知道有什么api可以提供这个功能。

什么api能提供这个功能呢?我主要是用来查询天气情况的,所以需要根据输入在线生成的json/xml里面是提示地理位置相关信息。还请各位帮忙。不胜感激!

ps:我找了几天了,没有结果,不过刚看了百度的api,试一下先

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 11:09
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    你可以使用Android的EditTextListView来创建一个简单的搜索功能。首先,在你的XML布局文件中添加一个EditText控件和一个ListView控件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入城市名" />
    
        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
    

    然后,在你的Activity或Fragment中处理用户输入事件并调用网络请求获取城市列表:

    import com.example.myproject.R;
    import com.example.myproject.MyApplication;
    
    public class MainActivity extends AppCompatActivity {
    
        private EditText editText;
        private ListView listView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            editText = findViewById(R.id.editText);
            listView = findViewById(R.id.listView);
    
            // 假设你已经有一个网络接口来获取城市的JSON数据
            String cityListUrl = "https://example.com/cities.json";
            String result = getCityList(cityListUrl); // 这里应该有实际的数据获取逻辑
    
            parseJson(result, listView); // 将JSON解析为列表
        }
    
        public String getCityList(String url) {
            // 根据实际情况,这里只是一个示例
            return "";
        }
    
        public void parseJson(String json, ListView listView) {
            try {
                JSONObject jsonObject = new JSONObject(json);
                JSONArray jsonArray = jsonObject.getJSONArray("cities");
    
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject cityObject = jsonArray.getJSONObject(i);
                    String cityName = cityObject.getString("name");
                    addListItem(listView, cityName);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
        private void addListItem(ListView listView, String cityName) {
            // 创建一个新的列表项
            ListItem item = new ListItem(cityName);
            // 添加到ListView
            listView.add(item);
        }
    }
    

    在这个例子中,我们假设了一个名为MyApplication的类,其中包含一个方法getCityList()用于从URL获取城市列表。你需要根据实际情况替换这个方法。

    请注意,这只是一个基本的例子,实际的网络请求可能会涉及到更多的细节,例如如何处理错误、如何正确解析JSON等。

    评论

报告相同问题?