【Android】Handler應用(二):從服務器端加載JSON數據的優化

在上一篇博客http://blog.csdn.net/jueblog/article/details/12530751中,我們瞭解了Handler從服務器中加載JSON數據的過程。

爲了實現代碼的複用和進一步理解Handler的相關知識,我們對代碼進行如下優化。

Activity文件

HanderTest_Text_New.java
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文件

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佈局文件

<?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>

效果圖

加載一


加載二

發佈了128 篇原創文章 · 獲贊 36 · 訪問量 85萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章