Как установить эти значения в текстовое изображение базового адаптера в C#?
Я предполагаю, что ваша база адаптер означает BaseAdapter
для ListView
, то вы можете создать адаптер наследует от BaseAdapter
, например, так:
public class MainAdapter : BaseAdapter<Hashtable>
{
private List<Hashtable> items;
private Activity context;
public MainAdapter(Activity context, List<Hashtable> items) : base()
{
this.context = context;
this.items = items;
}
public override Hashtable this[int position]
{
get
{
return items[position];
}
}
public override int Count
{
get
{
return items.Count;
}
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
view = context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleListItem1, null);
view.FindViewById<TextView>(Android.Resource.Id.Text1).Text = items[position].ToString();
return view;
}
}
и использовать List<HashTable>
для адаптера, как это:
public class MainActivity : ListActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
//SetContentView(Resource.Layout.Main);
List<Hashtable> mList = new List<Hashtable>();
Hashtable ht = new Hashtable();
ht.Put(1, "One");
ht.Put(2, "Two");
ht.Put(3, "Three");
ht.Put(4, "Four");
mList.Add(ht);
ListAdapter = new MainAdapter(this, mList);
}
}
Но я сомневаюсь, что это действительно то, что вам нужно. У вас есть только один элемент в List<>
, и этот элемент имеет один Hashtable
, который содержит четыре значения пары ключей. Возможно ли, что вам нужно указать значение пары ключей для каждого элемента ListView
вместо того, чтобы показывать четыре значения пары ключей в одном элементе?
Я согласен с @Henk Holterman, это очень странно положить Hashtable старого стиля в List<>
, если вы хотите использовать List<>
для хранения нескольких значений строк с ключом, вы можете просто следующий код:
List<string> mList = new List<string>();
mList.Add("One");
mList.Add("Two");
mList.Add("Three");
mList.Add("Four");
сам List<>
выделяет индекс для каждого пункта, например, если вы хотите, чтобы найти индекс строки элемента «Три», вы можете закодировать так:
var index = mList.IndexOf("Three");
с первым пунктом в List<>
будет соответствовать индекс 0, здесь индекс элемента «Три» будет равен 2.
Конечно, я не говорю, что нельзя хранить Hashtable
в , но обычно, когда мы хотим определить ключ для каждый элемент, один метод заключается в создании модели класса, например:
public class MyListModel
{
public int Key { get; set; }
public string Content { get; set; }
}
И теперь вы можете создать List<>
для этой модели:
List<MyListModel> mList = new List<MyListModel>();
for (int i = 1; i <= 10; i++)
{
mList.Add(new MyListModel { Key = i, Content = "item " + i });
}
преимущества использования модели данных для ListView
является что если вы каждый ListView
элемент имеет, например, более одного TextView
, каждый из которых предназначен для отображения различной информации, тогда вы можете просто добавить эти свойства в эту модель класса.
Для получения дополнительной информации о строительстве ListView
в Xamarin.Android вы можете обратиться к ListViews and Adapters.
Я не знаю о Xamarin textview, но очень странно ставить хэш-таблицу старого стиля в «Список <>». Вы уверены, что вам это нужно? –
спасибо buddy.Yes мне нужно и сказать мне старый стиль также. Я хочу сохранить несколько значений, используя ключ – Android1