У меня есть простое Xamarin.Android-приложение.
В разделе «Активность» этого приложения отображается список.Пожалуйста, смотрите следующий MyActivity.axml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width ="match_parent"
android:layout_height="wrap_content"
android:text ="Click Me"
android:layout_marginTop ="20dp"
android:layout_marginLeft ="25dp"
android:layout_marginRight ="25dp"
android:id="@+id/button" />
<Space
android:layout_width="match_parent"
android:layout_height="25dp"
android:id="@+id/space" />
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list" />
</LinearLayout>
Одна строка этого списка содержит просто две записи, пожалуйста, смотрите ListRow.axml:
<?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">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft ="5dp"
android:layout_marginTop ="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight ="5dp" />
<TextView
android:id="@+id/value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft ="5dp"
android:layout_marginTop ="10dp"
android:layout_marginBottom="10dp"
android:layout_marginRight ="5dp" />
</RelativeLayout>
Так что код этого действия выглядитнапример:
public class MyActivity : Activity
{
List<Entry> List = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MyActivity);
List = PopulateList();
var lv = FindViewById<ListView>(Resource.Id.list);
var adapter = new ListAdapter(this, Resource.Layout.List, List);
lv.Adapter = adapter;
FindViewById<Button>(Resource.Id.button).Click += OnButtonClick;
}
}
Для полноты, вот код для моего ListAdapter.cs-класса:
class ListAdapter : ArrayAdapter
{
List<Entry> List;
public ListAdapter(Context Context, int ListId, List<Entry> List) : base(Context, ListId, List)
{
this.List = List;
}
public override int Count
{
get { return List.Count; }
}
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);
}
v.FindViewById<TextView>(Resource.Id.name).Text = List[position].Name;
v.FindViewById<TextView>(Resource.Id.value).Text = "Original Value";
return v;
}
}
Итак, мой вопрос теперь следующий: предположим, чтов этом списке более одного элемента.При нажатии кнопки я хочу изменить один конкретный текст в этом списке.Скажем, вторая запись в списке (Resource.Id.value) .Text (которая теперь говорит «Исходное значение») в «Измененное значение» или что-то в этом роде.Но только второго.Все остальные предметы должны оставаться такими же.
Пожалуйста, ознакомьтесь с приведенным ниже примером нацеленного вывода, может быть, легче понять, что я пытаюсь сделать:
Имя Значение- - - - - - - - - - - - - - - -№ 1 Исходное значениеNo.2 Исходное значение№ 3 Исходное значение
[Нажатие кнопки]
Имя Значение- - - - - - - - - - - - - - - -№ 1 Исходное значение№ 2 измененное значение№ 3 Исходное значение
Может кто-нибудь может мне помочь / подсказать, как это сделать?Как должен выглядеть мой private void OnButtonClick(object sender, EventArgs e)
-метод?Как я могу получить доступ к одной записи в этом списке?
Заранее спасибо за ответы и наилучшие пожелания