從服務器端加載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>  

 

效果圖

加載一

 

加載二

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *