使用AsyncTask在android home widget中将TextView的上一个文本与新的更新文本进行比较?
我制作了一个简单的主屏幕小部件,它有两个文本视图字段和一个刷新按钮。文本视图是从AsyncTask加载的,AsyncTask下载并解析小XML文件。刷新按钮使用PendingEvent再次调用onUpdate,最终再次调用AsyncTask。我有一个简单的模型类XMLValues,它可以存储从XML解析的值,并在AppWidgetProvider类中初始化:使用AsyncTask在android home widget中将TextView的上一个文本与新的更新文本进行比较?,android,android-asynctask,android-widget,textview,android-pendingintent,Android,Android Asynctask,Android Widget,Textview,Android Pendingintent,我制作了一个简单的主屏幕小部件,它有两个文本视图字段和一个刷新按钮。文本视图是从AsyncTask加载的,AsyncTask下载并解析小XML文件。刷新按钮使用PendingEvent再次调用onUpdate,最终再次调用AsyncTask。我有一个简单的模型类XMLValues,它可以存储从XML解析的值,并在AppWidgetProvider类中初始化: public class XmlValues { private int mFieldValue1; public int getFie
public class XmlValues {
private int mFieldValue1;
public int getFieldValue1() {
return mFieldValue1;
}
public void setFieldValue1(int FieldValue) {
mFieldValue1 = FieldValue;
private int mFieldValue2;
public int getFieldValue2() {
return mFieldValue2;
}
public void setFieldValue2(int FieldValue) {
mFieldValue2 = FieldValue;
}
}
在AsyncTask中,我传入RemoteViews视图、int-appWidgetID、AppWidgetManager-AppWidgetManager,其中下载并解析XML,postExecute方法如下所示:
protected void onPostExecute(XmlValues xv) {
if (isCancelled()) {
xv = null;
}
views.setTextViewText(R.id.textView1, xv.getFieldValue1());
views.setTextViewText(R.id.textView2, xv.getFieldValue1());
WidgetManager.updateAppWidget(WidgetID, views);
}
这一切都可以用正确的值加载TextView,但是我一直在尝试执行以下操作-因为我正在解析的XML值可能会发生更改,例如,如果来自新XML的新值大于小部件中的当前值,我希望更改TextView的颜色。我怎样才能做到这一点?我尝试四处查看,但没有找到如何影响在主窗口小部件类中创建的模型类对象,从AsyncTask的onPostExecute方法。您可以使用静态int字段存储上一个值:
private static int lastValue1 = -1; // you can use other initial value
private static int lastValue2 = -1;
然后您可以使用它,例如:
if( lastValue1 < xv.getFieldValue1() ) {
lastValue1 = xv.getFieldValue1();
views.setTextViewText(R.id.textView1, xv.getFieldValue1());
}
// the same for second value.
另一个解决方案是将最后一个值存储在SharedReference中。谢谢,这正是我需要的!