您的位置:首页 > 移动开发 > Android开发

【Android】Handler应用(二):从服务器端加载JSON数据的优化

2014-01-07 09:35 435 查看
在上一篇博客/article/1626189.html中,我们了解了Handler从服务器中加载JSON数据的过程。

为了实现代码的复用和进一步理解Handler的相关知识,我们对代码进行如下优化。

Activity文件

HanderTest_Text_New.java

[java] view plaincopy

package com.app.myhandler;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.View;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;

import com.app.util.MyThread;

public class HanderTest_Text_New extends Activity {

private Button button1, button2;

private TextView textView1, textView2;

private Handler handler;

private ProgressBar progressBar;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_hander_text_new);

button1 = (Button) findViewById(R.id.button1);

button2 = (Button) findViewById(R.id.button2);

textView1 = (TextView) findViewById(R.id.textView1);

textView2 = (TextView) findViewById(R.id.textView2);

progressBar = (ProgressBar) findViewById(R.id.progressBar1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

progressBar.setVisibility(View.VISIBLE);

new MyThread(handler,"http://10.0.2.2:8888/android/1.jsp",1).start();

}

});

button2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

progressBar.setVisibility(View.VISIBLE);

new MyThread(handler,"http://10.0.2.2:8888/android/2.jsp",2).start();

}

});

handler = new Handler(){

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

switch (msg.what) {

case 1:

textView1.setText(msg.obj.toString());

textView2.setText("文本二");

progressBar.setVisibility(View.GONE);

break;

case 2:

textView1.setText("文本一");

textView2.setText(msg.obj.toString());

progressBar.setVisibility(View.GONE);

break;

default:

break;

}

}

};

}

}

MyThread文件

[java] view plaincopy

package com.app.util;

import java.util.Map;

import android.os.Handler;

import android.os.Message;

public class MyThread extends Thread{

private Handler handler;

private String url;

private int what;

public MyThread(Handler handler, String url, int what) {

this.handler = handler;

this.url = url;

this.what = what;

}

@Override

public void run() {

// TODO Auto-generated method stub

String result = ApplicationDemo.handleGet(url);

Message message = handler.obtainMessage();

message.what = what;

message.obj = result;

//向handler发送消息

handler.sendMessage(message);

}

}

XML布局文件

[html] view plaincopy

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content" >

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="加载一" />

<Button

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="加载二" />

</LinearLayout>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical" >

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="文本一"

android:textColor="#E7473E"/>

<TextView

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="文本二"

android:textColor="#4DB849"/>

</LinearLayout>

<ProgressBar

android:id="@+id/progressBar1"

style="?android:attr/progressBarStyleLarge"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:visibility="gone"/>

</LinearLayout>

效果图

加载一



加载二

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐