В моем Xamarin.Android-приложении при открытии специальной страницы (действия) при создании отображается таблица.
ListAdapter определяет определенные поля в этой таблице.
У меня есть функция, которая дает мне внешний int. Int входит в число других данных, отображаемых в этой таблице.
Но эта функция вызывается только один раз (при создании).
Как я могу вызвать эту функцию во время выполнения в течение определенного интервала времени? Я хочу, чтобы, если полученное значение int изменилось, отображение int в таблице также изменилось без повторного вызова всей операции.
Может кто-нибудь может мне помочь и подсказать, как это сделать? Это было бы очень любезно!
Пожалуйста, позвольте мне поделиться некоторым кодом, чтобы вам было легче понять меня:
Resource.Layout.Activity:
<LinearLayout>
[...]
<ListView
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ListView" />
</LinearLayout>
Активность:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Activity);
[...]
var lv = FindViewById<ListView>(Resource.Id.ListView);
lv.Adapter = new ListAdapter(this, Resource.Layout.List, list.CurrentList, Intent.GetStringExtra("ServerIP"));
}
Resource.Layout.List:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
[...]
<ImageView
android:id="@+id/ImageView" />
</RelativeLayout>
Класс ListAdapter: ArrayAdapter
public ListAdapter(Context Context, int ListId, List<Geraet> list, string serverip) : base(Context, ListId, Geraete)
{
this.List = list;
}
[...]
public override View GetView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
LayoutInflater inflater = (LayoutInflater) Context.GetSystemService(Context.LayoutInflaterService);
v = inflater.Inflate(Resource.Layout.List, parent, false);
}
if (Get_Status(List[position]) == 1)
{
v.FindViewById<ImageView>(Resource.Id.ImageView).SetImageResource(Resource.Drawable.green);
}
if (Get_Status(List[position]) != 1)
{
v.FindViewById<ImageView>(Resource.Id.ImageView).SetImageResource(Resource.Drawable.red);
}
}
[...]
private int Get_Status(Geraet geraet)
{
var request = HttpWebRequest.Create(string.Format(Constants.StatusPath, Serverip, Constants.WebservicePort, geraet.Ip));
request.ContentType = "application/json";
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
var content = reader.ReadToEnd();
var result = System.Text.RegularExpressions.Regex.Replace(content, @"[^0-9]", "");
if (result == string.Empty)
{
return -2;
}
else
{
return Int32.Parse(result);
}
}
}
}
Спасибо за ответы заранее и с наилучшими пожеланиями