我很好奇设计一个只进行远程调用的活动的最佳方法是什么,并获取item_name和item_description,并需要将其显示在屏幕上。
我正在考虑做一个ListView的黑客攻击,但它似乎并不是真正意图。
我真正需要的是能够使用从数据库返回的数据更新2个字段。最好的方法是什么?
谢谢!
答案 0 :(得分:1)
最好的方法是让一个后台任务句柄进行远程调用(AsyncTask
应该为你做这个)。由于Activity几乎是UI的控制器,因此最好将这种繁重的工作从主线程中解脱出来。
有多个用于发出HTTP请求的类(DefaultHttpClient
,HttpURLConnection
等)。之后,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
中