Ich bin Anfänger in Xamarin. Ich habe eine Listview, in jeder Zeile gibt es eine Textansicht und eine Bildansicht. Ich habe einen Adaptator dafür geschrieben, Aktivität, alles. Mein Ziel ist, wenn ich auf ein Element in der Listenansicht klicke, wechselt das Bild zu einem anderen.Xamarin ersetzen image imageview Ressource in der Listenansicht
Datenklasse:
class otherLabelListData
{
private string otherLabel;
private int image;
public otherLabelListData(string otherLabel, int image)
{
this.otherLabel = otherLabel;
this.image = image;
}
public string OtherLabel
{
get { return otherLabel; }
}
public int Image
{
get { return image; }
}
}
Hier ist der Halter Klasse:
class otherHolder
{
public TextView labelTxt;
public ImageView iconImg;
public otherHolder(View itemView)
{
labelTxt = itemView.FindViewById<TextView>(Resource.Id.otherMessageLabel);
iconImg = itemView.FindViewById<ImageView>(Resource.Id.otherLabelIcon);
}
}
Adapter:
class otherLabelListAdapter : BaseAdapter<otherLabelListData>
{
private JavaList<otherLabelListData> mItems;
private Context mContext;
private LayoutInflater inflater;
public otherLabelListAdapter(Context context, JavaList<otherLabelListData> items)
{
this.mItems = items;
this.mContext = context;
}
public override Java.Lang.Object GetItem(int position)
{
return mItems.Get(position);
}
public override int Count
{
get
{
return mItems.Size();
}
}
public override long GetItemId(int position)
{
return position;
}
public override otherLabelListData this[int position]
{
get
{
return mItems[position];
}
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
if(inflater == null)
{
inflater = (LayoutInflater)mContext.GetSystemService(Context.LayoutInflaterService);
}
if(convertView == null)
{
convertView = inflater.Inflate(Resource.Layout.OtherLabelViewRow, parent, false);
}
otherHolder holder = new otherHolder(convertView);
holder.labelTxt.Text = mItems[position].OtherLabel;
holder.iconImg.SetImageResource(mItems[position].Image);
return convertView;
}
}
Die Aktivität:
[Activity(Label = "Activity1", MainLauncher = false, Theme = "@style/Theme.Mt")]
public class Activity_OtherScreen : Android.Support.V4.App.FragmentActivity
{
private ListView mListView;
private otherLabelListAdapter adapter;
JavaList<otherLabelListData> list;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Other_Layout);
mListView = FindViewById<ListView>(Resource.Id.otherList);
adapter = new otherLabelListAdapter(this, getOthers());
mListView.Adapter = adapter;
mListView.ItemClick += MListView_ItemClick;
}
private JavaList<otherLabelListData> getOthers()
{
list = new JavaList<otherLabelListData>();
otherLabelListData ot;
ot = new otherLabelListData("Label 1", Resource.Drawable.send2display);
list.Add(ot);
ot = new otherLabelListData("Label 2", Resource.Drawable.send2display);
list.Add(ot);
ot = new otherLabelListData("Label 3", Resource.Drawable.send2display);
list.Add(ot);
return list;
}
private void MListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
//..
???
}
}
Ich habe mehr Lösung ausprobiert, aber Bilder wirken nicht wirklich, wenn ich klicke. Bitte geben Sie mir eine Idee! Danke!
Ok, in diesem Fall ist es nicht notwendig, diese Methode 'MListView_ItemClick (Objekt Absender, AdapterView.ItemClickEventArgs e)' in Aktivität? – user1223445
Nein, da Sie das Klickereignis direkt in Ihrem Adapter definieren, müssen Sie den Listener nicht in der Aktivität aufrufen. – YumeYume