`
zhengaihua
  • 浏览: 21706 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

OkHttp+Handler+listview

阅读更多
package bwie.caipu;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.List;

import Util.OkHttpUtils;
import bean.Bean;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

    private String time;
    private ArrayAdapter<Bean.TngouBean> adapter;
    private EditText ed;
    private GridView lv;
    private Button btn;
    private List<Bean.TngouBean> list;
    Handler handler = new Handler() {


        @Override
        public void handleMessage(Message msg) {
            String str = (String) msg.obj;
            Gson gson = new Gson();
            Bean be = gson.fromJson(str, Bean.class);
            list = be.getTngou();
            adapter = new ArrayAdapter<Bean.TngouBean>(MainActivity.this, android.R.layout.simple_list_item_1, list);
            lv.setAdapter(adapter);
            super.handleMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ed = (EditText) findViewById(R.id.et);
        lv = (GridView) findViewById(R.id.listView);
        btn = (Button) findViewById(R.id.but);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(MainActivity.this, Activitysec.class);
                intent.putExtra("id", list.get(i - 1).getId());
                startActivity(intent);
            }
        });
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name = ed.getText().toString();
                for (Bean.TngouBean li : list) {
                    if (name.equals(li.getName())) {
                        Intent intent = new Intent(MainActivity.this, Activitysec.class);
                        intent.putExtra("id", li.getId());
                        startActivity(intent);
                    }
                }
            }
        });
        getEnqueue();
    }

    private void getEnqueue() {
        OkHttpUtils.get("http://www.tngou.net/api/cook/classify",
                new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        final String result = response.body().string();
                        Message msg = Message.obtain();
                        msg.obj = result;
                        handler.sendMessage(msg);
                    }
                });
    }
}
Glide.with(context)
                .load("http://tnfs.tngou.net/image" + tn.getImg())
                .placeholder(R.mipmap.ic_launcher)
                .into(vh.imageView);

 

分享到:
评论

相关推荐

    异步联网、解析json、下载保存并用listView+Glide开源库显示图片列表demo

    本教程将通过一个具体的“异步联网、解析JSON、下载保存并用ListView+Glide开源库显示图片列表demo”来详细讲解这些关键知识点。 首先,我们要理解**异步联网**的概念。在Android开发中,由于主线程不能执行耗时...

    Json解析到listView

    6. **异步处理**:由于网络请求和JSON解析是在主线程中执行的,会阻塞用户界面,因此通常我们会使用AsyncTask或者Handler/Looper机制来处理这些耗时操作。这样可以保证UI的流畅性,避免出现ANR(Application Not ...

    listview加载网络数据

    对于更复杂的后台任务管理,可以考虑使用IntentService、Handler或LiveData等。 总之,ListView加载网络数据涉及网络请求、数据解析、异步处理等多个环节,合理的架构设计和选择合适的工具能提高应用的性能和用户...

    android异步远程解析json数据绑定到listview上

    因此,通常我们会使用AsyncTask、Handler、IntentService或者现代的LiveData和Coroutines等异步处理机制来解决这个问题。 接着,远程解析JSON数据涉及网络请求。Android提供了多种网络库,如HttpURLConnection、...

    android listview video

    1. **多线程加载数据**:在Android中,我们可以使用AsyncTask、Handler、Thread、ThreadPool等来实现后台线程加载。推荐使用异步任务(AsyncTask),它简化了线程管理和UI更新。创建一个AsyncTask子类,重写`...

    网络请求JSON数据,更新到ListView

    在案例中,开发者可能使用了`AsyncTask`或`Handler`来处理异步任务,以便在后台线程获取数据,避免阻塞主线程。 2. **JSON解析**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...

    图文混排listView

    可以使用AsyncTask、Handler、Thread或更现代的库如Volley、OkHttp、Retrofit等实现异步加载。AsyncTask是一个轻量级的并发框架,适合处理短时间的后台任务。在onPreExecute()方法中启动加载,在doInBackground()...

    android listview局部刷新和模拟应用下载 实例源码

    2. 在`doInBackground`方法中,使用`HttpURLConnection`或`OkHttp`等网络库进行文件下载,并在下载过程中定期调用`publishProgress`更新进度。 3. 实现`onProgressUpdate`方法,将接收到的下载进度更新到ListView。...

    Android服务器解析json数据实现下拉刷新上拉加载ListView显示

    Android提供了AsyncTask、Handler、Loader等多种异步处理机制,或者可以使用现代的协程(Coroutines)。 6. 自定义Adapter: 自定义Adapter需要继承自BaseAdapter或ArrayAdapter,并重写其中的方法,如`getView()`...

    网络下载图片ListView加载

    在Android开发中,"网络下载图片并显示到ListView"是一个常见的需求,特别是在构建内容丰富的应用时,如新闻阅读器或社交应用。这个过程涉及到多个关键知识点,包括网络请求、图片处理、UI性能优化以及异步操作。 ...

    安卓Android源码——listview获取网络图片缓存优化.zip

    使用Handler、AsyncTask或Runnable配合Thread,或者使用上述提到的网络请求库的异步加载功能。 6. **图片质量与尺寸调整** - 为了减少内存消耗和加载时间,可以根据ListView item的实际大小动态调整图片的加载尺寸...

    安卓listview相关相关-这是一个包含异步加载网络编程JSON解析LruCache图片缓存的简易的ListView图文混排Demo.rar

    在Android中,为了防止UI线程被阻塞,网络请求和数据处理通常在后台线程执行,然后通过Handler或AsyncTask等机制更新UI。异步加载能确保用户界面的流畅性,即使在网络操作正在进行时也能保持应用的响应性。 2. **...

    ListView异步加载网络大图Demo

    可以使用AsyncTask或者其他异步处理框架如Handler、Loader或Retrofit+Glide等库。 3. **图片缩放**:根据ListView item的大小预先计算出合适的图片尺寸,只加载和显示必要的像素。可以使用BitmapFactory的...

    Android代码-通过httpclient获取到JSON数据展示到ListView.zip

    6. **线程安全**:由于数据加载在后台线程,而更新UI需在主线程,因此需要使用`runOnUiThread()`或`Handler`来确保UI操作的线程安全。 7. **数据绑定**:在`getView()`方法内,将解析出的JSON数据绑定到ListView的...

    Handler异步消息处理机制创建图加载类

    在“Handler异步加载图片 GridView 上拉刷新 下拉刷新”这个主题中,我们将深入探讨如何利用Handler实现图片的异步加载,以及如何在GridView和其他控件如ListView、ScrollView中集成上拉刷新和下拉刷新功能。...

    Android初学者之Listview异步加载网络图片并动

    在Android开发中,ListView是展示大量数据的常用组件,它能有效地进行滚动优化,节省内存。对于初学者来说,理解并实现ListView的异步加载网络图片以及动态更新是非常重要的技能。这个主题通常涵盖以下几个关键知识...

    Listview中使用线程实现无限加载更多项目的功能

    2. **启动加载更多数据的线程**:在判断到用户滚动到底部后,启动一个新的线程,如AsyncTask或Handler,来执行获取新数据的任务。这一步要确保不在主线程中进行,以避免阻塞UI。 3. **异步加载数据**:在后台线程中...

    取外部ListView内容.rar

    当数据加载完成,再通过Handler或runOnUiThread更新UI。 8. **ListView的优化**: - 使用ViewHolder设计模式提高ListView的滚动性能。 - 实现ListView的空视图,当没有数据时展示提示信息。 - 考虑使用...

    ListView获取网络数据

    可以使用AsyncTask、Handler/Looper机制,或者使用现代的RxJava/RxAndroid结合Retrofit库进行响应式编程。 4. **数据解析**:获取到服务器数据后,需要将其解析成Java对象。对于JSON,Gson库允许我们将JSON字符串...

    listView异步加载(多线程和AsyncTask)以及缓存的使用

    通常,我们会创建一个Thread或者使用Handler和Looper配合,将网络请求的结果发送回主线程更新UI。然而,这种方式需要手动管理线程生命周期,相对复杂。 接下来是AsyncTask,它是Android提供的一种轻量级的异步执行...

Global site tag (gtag.js) - Google Analytics