Android利用Volley异步加载数据完整详细示例(一)

简介: MainActivity如下:package cc.cn;import java.util.HashMap;import org.json.JSONObject;import android.
MainActivity如下:
package cc.cn;

import java.util.HashMap;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import com.android.volley.AuthFailureError;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.Request.Method;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
/**
 * Demo描述:
 * 去年一个项目中简单的使用了Volley,参见:
 * http://blog.csdn.net/lfdfhl/article/details/12223345
 * 最近guolin写了几篇文章详细介绍Volley,所以在此比较系统地学习一下.
 * 在本示例中,主要包括:
 * 1 利用Volley实现Get请求
 * 2 利用Volley实现Post请求
 * 3 利用Volley实现Json数据请求
 * 
 * 注意事项:
 * 1 引入jar包volley.jar
 * 2 网络权限<uses-permission android:name="android.permission.INTERNET"/>
 * 
 * 学习资料:
 * http://blog.csdn.net/guolin_blog/article/details/17482095
 * Thank you very much
 *
 */
public class MainActivity extends Activity {
	private RequestQueue mRequestQueue;
	private StringRequest mStringRequest;
	private Context mContext;
	private JsonObjectRequest mJsonObjectRequest;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        volley_get();
        //volley_post();
        //volley_json();
    }
    

    
    //利用Volley实现Get请求
    private void volley_get(){
    	mContext=this;
    	String url="http://www.baidu.com/";
    	//1 创建RequestQueue对象
    	mRequestQueue=Volley.newRequestQueue(mContext);
    	//2 创建StringRequest对象
		mStringRequest = new StringRequest(
				url,
				new Response.Listener<String>() {
					@Override
					public void onResponse(String response) {
                        System.out.println("请求结果:"+response);
					}
				}, 
				new Response.ErrorListener() {
					@Override
					public void onErrorResponse(VolleyError error) {
                        System.out.println("请求错误:"+error.toString());
					}
				});
		//3 将StringRequest添加到RequestQueue
		mRequestQueue.add(mStringRequest);
    }
    
    //利用Volley实现Post请求
	private void volley_post() {
		String url = "http://hxyj.cwwic.cn/wap/api_cs/user.php?action=login";
		mContext = this;
		mRequestQueue = Volley.newRequestQueue(mContext);
		mStringRequest = new StringRequest(
				Method.POST, 
				url,
				new Response.Listener<String>() {
					@Override
					public void onResponse(String response) {
						System.out.println("请求结果:" + response);
					}
				}, 
				new Response.ErrorListener() {
					@Override
					public void onErrorResponse(VolleyError error) {
						System.out.println("请求错误:" + error.toString());
					}
				}) {
			//携带参数
			@Override
			protected HashMap<String, String> getParams()throws AuthFailureError {
				HashMap<String, String> hashMap = new HashMap<String, String>();
				hashMap.put("un", "411111222");
				hashMap.put("pw", "180034111");
				return hashMap;
			}

		};
		mRequestQueue.add(mStringRequest);

	}
	
	 //利用Volley实现Json数据请求
	private void volley_json() {
		mContext = this;
		String url = "http://m.weather.com.cn/data/101010100.html";
		// 1 创建RequestQueue对象
		mRequestQueue = Volley.newRequestQueue(mContext);
		// 2 创建JsonObjectRequest对象
		mJsonObjectRequest = new JsonObjectRequest(
				url, 
				null,
				new Response.Listener<JSONObject>() {
					@Override
					public void onResponse(JSONObject response) {
						System.out.println("请求结果:" + response.toString());
					}
				}, 
				new Response.ErrorListener() {
					@Override
					public void onErrorResponse(VolleyError error) {
						System.out.println("请求错误:" + error.toString());
					}
				});

		// 3 将JsonObjectRequest添加到RequestQueue
		mRequestQueue.add(mJsonObjectRequest);

	}
    
    
    
}

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="学习Volley(一)" 
        android:layout_centerInParent="true"
     />

</RelativeLayout>


相关文章
|
11月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1020 4
|
3月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
183 11
|
5月前
|
存储 XML Java
Android 文件数据储存之内部储存 + 外部储存
简介:本文详细介绍了Android内部存储与外部存储的使用方法及核心原理。内部存储位于手机内存中,默认私有,适合存储SharedPreferences、SQLite数据库等重要数据,应用卸载后数据会被清除。外部存储包括公共文件和私有文件,支持SD卡或内部不可移除存储,需申请权限访问。文章通过代码示例展示了如何保存、读取、追加、删除文件以及将图片保存到系统相册的操作,帮助开发者理解存储机制并实现相关功能。
1168 2
|
8月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
469 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12月前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
184 1
|
12月前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
480 0
|
16天前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
212 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
26天前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
96 6
|
3月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
115 0
|
7月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
1405 77

热门文章

最新文章