2016-04-20 3 views
1

ich einige Fehler bekam, wenn ich einen Header Listenansicht erstellen, die auf Xamarin android

public class CustomAdapter : BaseAdapter{ 
 

 
\t private const int TYPE_ITEM = 0; 
 
\t private const int TYPE_SEPARATOR = 1; 
 

 
\t private List<String> mData; 
 
\t private TreeSet sectionHeader; 
 

 
\t private LayoutInflater mInflater; 
 

 
\t public CustomAdapter(Context context) { 
 
\t \t mInflater = (LayoutInflater) context 
 
\t \t \t .GetSystemService(Context.LayoutInflaterService); 
 
\t } 
 

 
\t public void addItem(String item) { 
 
\t \t mData.Add(item); 
 
\t \t NotifyDataSetChanged(); 
 
\t } 
 

 
\t public void addSectionHeaderItem(String item) { 
 
\t \t mData.Add(item); 
 
\t \t sectionHeader.Add(mData.Count - 1); 
 
\t \t NotifyDataSetChanged(); 
 
\t } 
 

 
\t public int getItemViewType(int position) { 
 
\t \t return sectionHeader.Contains(position) ? TYPE_SEPARATOR : TYPE_ITEM; 
 
\t } 
 

 

 
\t public int getViewTypeCount { 
 
\t \t get{ return 2; } 
 
\t } 
 

 

 
\t public override int Count { 
 
\t \t get {return mData.Count;} 
 
\t } 
 

 

 
\t public override GetItem this[int position] { 
 
\t \t get{ return mData [position]; } 
 
\t } 
 
\t \t 
 
\t public override long GetItemId(int position) { 
 
\t \t return position; 
 
\t } 
 

 
\t public View getView(int position, View convertView, ViewGroup parent) { 
 
\t \t ViewHolder holder = null; 
 
\t \t int rowType = getItemViewType(position); 
 

 
\t \t if (convertView == null) { 
 
\t \t \t holder = new ViewHolder(); 
 
\t \t \t switch (rowType) { 
 
\t \t \t case TYPE_ITEM: 
 
\t \t \t \t convertView = mInflater.Inflate(Resource.Layout.textViewItemsSeparator, parent); 
 
\t \t \t \t holder.textView = (TextView) convertView.FindViewById(Resource.Id.textviewHeaderItems); 
 
\t \t \t \t break; 
 
\t \t \t case TYPE_SEPARATOR: 
 
\t \t \t \t convertView = mInflater.Inflate(Resource.Layout.textViewHeaderItems, parent); 
 
\t \t \t \t holder.textView = (TextView) convertView.FindViewById(Resource.Id.textviewItemsSeparator); 
 
\t \t \t \t break; 
 
\t \t \t } 
 
\t \t \t convertView.Tag=holder; 
 
\t \t } else { 
 
\t \t \t holder = (ViewHolder)convertView.Tag as ViewHolder; 
 
\t \t } 
 
\t \t holder.textView.Text=mData[position]; 
 

 
\t \t return convertView; 
 
\t } 
 

 
\t public class ViewHolder:Java.Lang.Object { 
 
\t \t public TextView textView; 
 
\t }

OnActivityCreated: 
 
mAdapter=new CustomAdapter(this); 
 
\t \t \t for (int i = 0; i <= items.Count; i++) { 
 
\t \t \t \t mAdapter.addItem (items [i].ToString()); 
 
\t \t \t \t if (i == 0) { 
 
\t \t \t \t \t mAdapter.addSectionHeaderItem ("Music"); 
 
\t \t \t \t } else if(i==13) { 
 
\t \t \t \t \t mAdapter.addSectionHeaderItem ("Audio"); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t \t lst.Adapter = new CustomAdapter (Activity, mAdapter);

Ihren kundenspezifischen Adapter für Listview erstellen

Sie müssen getViewTypeCount außer Kraft setzen() Methode. Diese Methode gibt die Anzahl der Sichtenarten zurück, die von der getView-Methode erstellt werden.

Ich habe versucht, eine Header-Listenansicht zu erstellen.

+0

Die Xamarin Android API-Dokumentation finden Sie hier: https://developer.xamarin.com/api/root/MonoAndroid-lib. Versuchen Sie, nach jeder Methode zu suchen, mit der Sie Probleme haben, lesen Sie die Dokumentation für die Methode und beheben Sie den Fehler. Einfach eine Fehlerliste hier zu posten und zu erwarten, dass wir sie für Sie reparieren, ist nicht cool. – Jason

+0

Ich habe keine Ahnung holder.textView.SetText (mData [position]); –

+0

meine Post aktualisiert –

Antwort

1

Set der Text die Eigenschaft eines TextView

holder.textView.Text = mData[position]; 

Unter der Haube mit, wandelt Xamarin die C#string zu JavaCharSequence und ruft setText für Sie.


P. S

Sie haben in der Dokumentation suchen! Es ist ein Muss, wenn Sie ein Anfänger sind.

+0

bei bottom.ublic Überschreibung GetItem meinen Code aktualisiert diese [int position] { \t \t \t get {return MDATA [Position]; } \t \t} ex: BaseAdapter -> public override TrackModel.Track diese [int index] \t \t \t { \t \t \t \t get {return _tracks [index]; } \t \t \t} –

+0

Also, was heißt stattdessen GetItem –

Verwandte Themen