0
Xamarin에서 Android app 용 사용자 지정 어댑터를 만들었습니다. ListViewItems를 사용자 지정하려고했기 때문입니다.
선택한 Listitem을 강조하고 싶습니다. 그래서 SimpleListItemActivated1
플래그를 사용하고 싶습니다. 하지만 당신은이 맥락에서 ArrayAdapter
이 플래그를 사용할 수 있습니다SimpleListItemActivated1을 Android에서 사용자 지정 어댑터와 함께 사용
_list.Adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItemActivated1,
tempNames);
그러나 나는 내 자신의 어댑터를 구현하고 나는 내 목록보기 항목을 사용자 정의해야합니다
_adapter = new AndroidUI.KundenViewAdapter (this,_kunden);
_list.Adapter = _adapter
가 SimpleListItemActivated1
의 사용 방법 내 어댑터?
내 어댑터의 코드는 다음과 같다 :
namespace AndroidUI
{
public class KundenViewAdapter : BaseAdapter<BusinessLayer.Kunde>
{
private readonly Activity _context;
private List<Kunde> _kunden;
public KundenViewAdapter(Activity context, IEnumerable<Kunde> kunden)
{
_kunden = kunden.ToList();
_context = context;
}
public override int Count
{
get { return _kunden.Count; }
}
public override long GetItemId(int position)
{
return Convert.ToInt64 (_kunden[position].ID);
}
public override Kunde this[int position]
{
get { return _kunden[position]; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
view = _context.LayoutInflater.Inflate(Resource.Layout.PersonListItem, null);
Kunde kunde = _kunden[position];
TextView textview = view.FindViewById<TextView> (Resource.Id.nameTextView);
textview.Text = kunde.Name;
if (String.IsNullOrEmpty (kunde.Nummer))
view.FindViewById<TextView> (Resource.Id.NummerTextView).Visibility = ViewStates.Gone;
else
view.FindViewById<TextView> (Resource.Id.NummerTextView).Text = kunde.Nummer;
return view;
}
}
public class LieferantViewAdapter : BaseAdapter<BusinessLayer.Lieferant>
{
private readonly Activity _context;
private List<Lieferant> _lieferant;
public LieferantViewAdapter(Activity context, IEnumerable<Lieferant> lieferant)
{
_lieferant = lieferant.ToList();
_context = context;
}
public override int Count
{
get { return _lieferant.Count; }
}
public override long GetItemId(int position)
{
return Convert.ToInt64 (_lieferant[position].ID);
}
public override Lieferant this[int position]
{
get { return _lieferant[position]; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
view = _context.LayoutInflater.Inflate(Resource.Layout.PersonListItem, null);
Lieferant lieferant = _lieferant[position];
TextView textview = view.FindViewById<TextView> (Resource.Id.nameTextView);
textview.Text = lieferant.Name;
if (String.IsNullOrEmpty (lieferant.Nummer))
view.FindViewById<TextView> (Resource.Id.NummerTextView).Visibility = ViewStates.Gone;
else
view.FindViewById<TextView> (Resource.Id.NummerTextView).Text = lieferant.Nummer;
return view;
}
}
}
도와 주셔서 감사합니다. 방금 Xamarin을 위해 약간을 바꿔 줘야했다 .Android. 그러나 그것은 완전하게 움직였다. –
당신을 환영합니다 :). –
클릭 한 모든 행을 강조 표시하므로 올바르지 않습니다. 또한 그것은보기 재활용을 망칠 것입니다. **이 코드는 올바른 동작을 수행하기에 충분하지 않습니다. ** –