seçilmiş, her şey yolunda. Daha sonra bunun için onClick
olayını ayarladım, böylece bir öğeyi her tıklattığımda, rengi sarıya döner. MainActivity
'da yazdığım OnClick
işlevi. Sorun şu ki, test ettiğimde, sadece bu maddenin rengini değiştirmez, aynı zamanda 2 madde değişir. Bunu okudum çünkü manzarayı yeniden kullanıyorum.Xamarin, Hem ListView ve RecyclerView, bir öğeyi tıklayın diğeri ben <code>ListView</code> yarattı, ben Başlangıçta hem <code>ListView</code> ve <code>RecyclerView</code></p> <p>bir sorun yaşıyorum
Bu yüzden, taktiklerimi değiştiriyorum, RecyclerView
yerine ancak aynı sorunla karşılaşıyorum. Rengini değiştirmek için bir öğeye tıkladığımda, diğeri de değişir. Sanırım, ListView
ve RecyclerView
öğelerinin her ikisi de bir öğeyi tıklattığımda karıştırdıkları için yeniden Öğeler.
Bu sorunu nasıl çözeceğimi bilmiyorum, bir çözümün hangi öğeye tıklandığını işaret eden boolean
dizisini eklemek olduğunu buldum ancak işe yaramadı. Herhangi bir fikrin var mı? Yani burada
Ben Xamarin site
https://developer.xamarin.com/guides/android/user_interface/recyclerview/
OnClic
k işleyicisi için örnek izledi
public class CustomAdapter : RecyclerView.Adapter
{
public Activity _activity;
public List<Row> lst;
public event EventHandler<int> ItemClick;
public CustomAdapter(List<Row> lst, Activity activity)
{
this.lst = lst;
this._activity = activity;
}
public override int ItemCount
{
get
{
return lst.Count;
}
}
public void OnClick(int position)
{
if (ItemClick!=null)
{
ItemClick(this, position);
}
}
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
MyViewHolder myholder = holder as MyViewHolder;
myholder.textView1.Text = lst[position].field1;
myholder.textView2.Text = lst[position].field2;
myholder.textView3.Text = lst[position].field3;
myholder.textView4.Text = lst[position].field4;
myholder.textView5.Text = lst[position].field5;
myholder.textView6.Text = lst[position].field6;
}
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
View v = this._activity.LayoutInflater.Inflate(Resource.Layout.item, parent, false);
TextView tv1 = (TextView)v.FindViewById(Resource.Id.textView1);
TextView tv2 = (TextView)v.FindViewById(Resource.Id.textView2);
TextView tv3 = (TextView)v.FindViewById(Resource.Id.textView3);
TextView tv4 = (TextView)v.FindViewById(Resource.Id.textView4);
TextView tv5 = (TextView)v.FindViewById(Resource.Id.textView5);
TextView tv6 = (TextView)v.FindViewById(Resource.Id.textView6);
MyViewHolder holder = new MyViewHolder(v, OnClick) { textView1 = tv1, textView2 = tv2, textView3 = tv3, textView4 = tv4, textView5 = tv5, textView6 = tv6 };
return holder;
}
}
class MyViewHolder : RecyclerView.ViewHolder
{
public TextView textView1, textView2, textView3, textView4, textView5, textView6;
public View mainView;
public MyViewHolder(View view, Action<int> listener) : base(view)
{
mainView = view;
mainView.Click += (sender, e) => listener(base.Position);
}
}
kod MainActivity
class MainActivity : Activity
{
public RecyclerView recyclerView;
public RecyclerView.LayoutManager manager;
public RecyclerView.Adapter adapter;
List<Row> lst;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
init();
recyclerView = (RecyclerView)FindViewById(Resource.Id.recyclerView);
manager = new LinearLayoutManager(this);
recyclerView.SetLayoutManager(manager);
CustomAdapter adapter = new CustomAdapter(lst, this);
adapter.ItemClick += onItemClick;
recyclerView.SetAdapter(adapter);
}
public void init()
{
lst = new List<Row>();
for (int i = 0; i < 15; i++)
{
Row row = new Row() { field1="1:43:00", field2="09-Apr-16", field3="KPI/Overflow", field4="Kevin Bacon", field5="Unowned", field6= "People Counting @ IPCAM-ID-C-1-1" };
lst.Add(row);
}
}
public void onItemClick(object sender, int position)
{
int itemPos = position + 1;
//Toast.MakeText(this, "this is " + itemPos, ToastLength.Short).Show();
recyclerView.GetChildAt(position).SetBackgroundColor(Android.Graphics.Color.Green);
}
}
özel bağdaştırıcı olduğunu
Başkalarının size – Pooya
sayesinde yardımcı olabilir böylece bugüne kadar yaptıklarını paylaşmak daha iyidir, ben kod eklemiş – LaXuanLinh
da recyclerview için xml Lütfen paylaşın Madde – Pooya