AutoCompleteTextView+Okhttp3+ListView实现简单的网络数据搜索展示

该博客介绍了如何结合AutoCompleteTextView、Okhttp3和ListView来实现一个简单的网络数据搜索展示功能。首先通过Okhttp3获取网络数据并存储到Serializable Bean类中,然后通过Handler更新数据。AutoCompleteTextView采用数组适配器进行快速显示。接着,实现了网络数据与适配器的交互,以及数据的传递和接收。最后,博主展示了跳转和接收数据的过程,测试表明项目基本没有问题。
摘要由CSDN通过智能技术生成

首先用OKHttp3获取网络上的数据,并保存到Serializeable的Bean类集合

OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(path+i)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if(response.isSuccessful()){
                    String  str = response.body().string();
                    QBean Q = new Gson().fromJson(str,QBean.class);
                    list.addAll(Q.getData());
                    response.body().close();//关闭反应体
                    handler.sendEmptyMessage(1);//获取完网络数据 调用handler更新数据
                    Log.e("oooo",i+"");
                }

            }
        });

之后通知Handler更新数据

private  Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            initData();
            handler.removeMessages(1);;//关闭handler 防止内存泄漏
        }
    };
}
private void initData() {
        adapter = new MyAdapter(MainActivity.this,list);
        list_view_id.setAdapter(adapter);
        initData_data();
        arrayAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,data) ;
        auto_text_view.setAdapter(arrayAdapter);
}

在这里 AutoCompleteTextView 使用的是 数组适配 做到简单快速

之后是 实现网络数据 与 AutoCompleteTextView适配器里面的一个更新交互

       data = new ArrayList<>();
        if(list.size()<=0){
            return;
        }else {
            for (int i = 0; i < list.size(); i++) {
                String tit = list.get(i).getTitle().trim().toString();
                data.add(tit);
            }
        }

最后 实现数据传递  以及 接收收据

重点:

AutoCompleteTextView 的 OnItemSelectedListener事件没有做处理!
所以在使用这个类时,OnItemClickListener有效果,而OnItemSelectedListener没有效果的
auto_text_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Log.e("onItemClick",i+"");
                for (int k = 0; k < data.size(); k++) {
                    if(auto_text_view.getText().toString().equals(data.get(k))){
                        Intent intent  = new Intent(MainActivity.this,DetailsActivity.class);
                        ArrayList<QBean.DataBean> bean = new ArrayList<>();//todo 获取需要的信息
                        bean.add(list.get(k));
                        intent.putExtra("bean",bean);
                        startActivity(intent);
                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值