Recyclerviews的OnClickListeners -Xamarin.Droid

时间:2017-06-24 13:15:05

标签: c# android xamarin android-recyclerview xamarin.android

我试图寻找我的观点行为的答案,但我似乎找不到任何与之相关的问题或解决方案。我的回收者观点似乎设置得很好。我刚刚意识到我的应用程序没有以正确的方式响应OnClickListeners。

我已在适配器中为回收器视图单击事件设置了多士。当我有10个视图。当我点击一个视图时,它会给出另一个视图的文本。在剩下的9个视图中,它似乎随机地给了我另一个视图的文本。可能是什么原因造成的?

活动

protected  override void OnCreate(Bundle bundle)
        {

            base.OnCreate(bundle);

            FrameLayout content = (FrameLayout)FindViewById(Resource.Id.content_frame);
            LayoutInflater.Inflate(Resource.Layout.Main, content);

            setUpRecyclerView();

        }

public void setUpRecyclerView(){

            rv = FindViewById<RecyclerView>(Resource.Id.recyclerView);

            LinearLayoutManager layoutManager = new LinearLayoutManager(this);
            layoutManager.Orientation = LinearLayoutManager.Vertical;
            layoutManager.ReverseLayout = true;
            layoutManager.StackFromEnd = true;
            rv.HasFixedSize = true;
            rv.SetLayoutManager(layoutManager);

            }

适配器

    public class FeedViewHolder : RecyclerView.ViewHolder, View.IOnClickListener, View.IOnLongClickListener

        {

            public FeedViewHolder(View itemView):base(itemView)
            {
              //binding of variables here


                itemView.SetOnClickListener(this);
                itemView.SetOnLongClickListener(this);



            }

            public void OnClick(View v)
            {
                itemClickListener.OnClick(v, AdapterPosition, false);
            }

            public bool OnLongClick(View v)
            {
                itemClickListener.OnClick(v, AdapterPosition, true);
                return true;
            }

            public class FeedAdapter : RecyclerView.Adapter, ItemClickListener

            {


                public FeedAdapter(RssObject rssObject, Context mContext)
                {

                    this.mContext = mContext;
                    this.inflater = LayoutInflater.From(mContext);
                    activity = (MainActivity)mContext;

                }




                public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
                {
                     hold = holder as FeedViewHolder;
//binding 
                     hold.itemClickListener = this;


                }


                public void OnClick(View view, int position, bool isLongClick)
                {

                    Toast.MakeText(activity, "Main text : " + hold.txtContent.Text, ToastLength.Long).Show();

                }




            public override int ItemCount
            {

                get { return rssObject.items.Count; }

            }

        }

    }


}

0 个答案:

没有答案