У меня есть рабочий пользовательский адаптер, который я поместил в просмотр списка.
Теперь я успешно добавляю 15 элементов.
Теперь я пытаюсь установить цвет фона для элемента 3 на оранжевый. Эта работа!
Однако, когда я прокручиваю вниз и вверх, цвет фона исчезает.
Как мы можем предотвратить это?
// MENU.axml со списком просмотра1
MENU.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#70292929"
android:layout_gravity="top|right"
android:orientation="horizontal">
<ListView
android:id="@+id/listview1"
android:background="#1b4f72"
android:layout_weight="0.5"
android:layout_gravity="top|left"
android:layout_width="10px"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
// C # код для добавления элементов в просмотр списка1 и попытка установить фон для элемента 3 на оранжевый
Android.Views.View MENUVIEW = LayoutInflater.Inflate(Resource.Layout.MENU, null);
ListView LISTVIEW1 = MENUVIEW.FindViewById<ListView>(Resource.Id.listview1);
//Add Items to the listview1
List<String> itemLIST = new List<String>();
for (int i = 0; i < 15; i++)
{
itemLIST.Add("hello" + i);
}
Adapter1 adapter1 = new Adapter1(this, Android.Resource.Layout.SimpleListItem1, itemLIST);
LISTVIEW1.Adapter = adapter1;
//Set backgroundcolor on item 3
LISTVIEW1.GetChildAt(3).SetBackgroundColor(Android.Graphics.Color.Orange);
TextView tview = listview.GetChildAt(3).FindViewById<TextView>(Resource.Id.itemtext);
tview.SetBackgroundColor(Android.Graphics.Color.Orange);
// Код для адаптера1
class Adapter1 : BaseAdapter
{
Context context;
int item = 0;
List<String> items = new List<String>();
public Adapter1(Context context, int resource, List<String> itemArray)
{
items = itemArray;
item = resource;
this.context = context;
}
public override Java.Lang.Object GetItem(int position)
{
return position;
}
public override long GetItemId(int position)
{
return position;
}
public String getItem(int position)
{
return items[position]; //returns list item at the specified position
}
public override int GetItemViewType(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var view = convertView;
Adapter1ViewHolder holder = null;
if (holder == null)
{
holder = new Adapter1ViewHolder();
var inflater = context.GetSystemService(Context.LayoutInflaterService).JavaCast<LayoutInflater>();
view = inflater.Inflate(Resource.Layout.textview, parent, false);
String currentItem = getItem(position);
//get the TextView for item name and item description
TextView textViewItemName = view.FindViewById<TextView>(Resource.Id.itemtext);
//sets the text for item name and item description from the current item object
textViewItemName.SetText(currentItem, TextView.BufferType.Normal);
holder.Title = textViewItemName;
holder.Title.Text = currentItem;
view.Tag = holder;
}
return view;
}
//Fill in cound here, currently 0
public override int Count
{
get
{
return items.Count;
}
}
}
class Adapter1ViewHolder : Java.Lang.Object
{
//Your adapter views to re-use
public TextView Title { get; set; }
}