Android:如果我需要从远程数据库获取项目和标题,我应该如何构建我的Activity?

时间:2012-03-14 16:04:18

标签: android

我很好奇设计一个只进行远程调用的活动的最佳方法是什么,并获取item_name和item_description,并需要将其显示在屏幕上。

我正在考虑做一个ListView的黑客攻击,但它似乎并不是真正意图。

我真正需要的是能够使用从数据库返回的数据更新2个字段。最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

最好的方法是让一个后台任务句柄进行远程调用(AsyncTask应该为你做这个)。由于Activity几乎是UI的控制器,因此最好将这种繁重的工作从主线程中解脱出来。

有多个用于发出HTTP请求的类(DefaultHttpClientHttpURLConnection等)。之后,Android还可以轻松使用JSON(我的偏好)或XML。

获得HTTP请求中的数据后,您可以让后台任务更新UI(通过您的活动),无论如何都可以。

<强>更新

一种解决方案是创建一个监听器接口,例如:

public interface MyHttpListener {
    public void updateUI(Myobject obj);
}

让Activity实现此接口。在AsyncTask中,在调用execute()之前的某个时刻,可以将任务的侦听器作为构造函数的一部分添加:

public class MyTask extends AsynTask() {
    .
    .
    .
    MyHttpListener myListener;
    .
    .
    .
    public MyTask( MyHttpListener listener /* other parameters if needed */ ) {
        myListener = listener;
        // other set up
    }
}

由于onPostExecuteMethod()在UI线程上运行,您可以执行以下操作:

public void onPostExecute(MyObject obj) {
    myListener.updateUI(obj);
}

如果您的Activity实现了此接口,那么这将是更新UI的最佳位置:

public class MyActivity extends Activity implements MyHttpListener {
    .
    .
    .
    public void updateUI(MyObject obj) {
         // do what you need in the UI
    }
    .
    .
    .
}

答案 1 :(得分:1)

您可以通过tvText.setText(变量)更新TextView的值;这将发生在AsyncTask的onPostExecute