Как реализовать фрагмент транзакции в представлении переработчика - PullRequest
0 голосов
/ 24 октября 2018

Я искал повсюду, но не могу узнать, как выполнить фрагментную транзакцию при нажатии на элемент в представлении переработчика.Так что я бродил, если кто-нибудь знает, как сделать это в C #

Спасибо

Адаптер Recycler

class FavouritesPageAdapter : RecyclerView.Adapter
{
    FavouritesFragment favFragment = new FavouritesFragment();
    private List<Favourites> mFavourites;
    private RecyclerView mRecyclerView;

    public FavouritesPageAdapter(List<Favourites> favourites, RecyclerView recyclerView)
    {
        mFavourites = favourites;
        mRecyclerView = recyclerView;
    }

    public override int ItemCount
    {
        get { return mFavourites.Count; }
    }

    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        FavouritesViewHolder viewHolder = holder as FavouritesViewHolder;
        viewHolder.mCalcLabel.Text = mFavourites[position].CalcName;
    }

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        View favouritesCard = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.favourites_cards, parent, false);

        TextView calcName = favouritesCard.FindViewById<TextView>(Resource.Id.calculatorLabel);

        FavouritesViewHolder view = new FavouritesViewHolder(favouritesCard) { mCalcLabel = calcName };

        return view;
    }

    public class FavouritesViewHolder : RecyclerView.ViewHolder
    {
        public View mMainView { get; set; }
        public TextView mCalcLabel { get; set; }

        public FavouritesViewHolder (View view) : base(view)
        {
        mMainView = view;
        }
    }

}

1 Ответ

0 голосов
/ 29 октября 2018

Если вам нужно открыть новый fragment, когда пользователь нажимает на элемент recyclerView, попробуйте сделать это в переопределенном методе OnBindViewHolder

public class FavouritesPageAdapter : RecyclerView.Adapter
{
    FavouritesFragment favFragment = new FavouritesFragment();
    private List<Favourites> mFavourites;
    private RecyclerView mRecyclerView;
    Activity _activity;

    public FavouritesPageAdapter(Activity activity, List<Favourites> favourites, RecyclerView recyclerView)
    {
        _activity=activity;
        mFavourites = favourites;
        mRecyclerView = recyclerView;
    }
    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        FavouritesViewHolder viewHolder = holder as FavouritesViewHolder;
        viewHolder.mCalcLabel.Text = mFavourites[position].CalcName;  
        var clickedItem = mFavourites[position];
        viewHolder.mMainView.click+=delegate
        {
            var objFrg = new MyFragment();
            var fragmentTx =_activity.SupportFragmentManager.BeginTransaction();
            fragmentTx.Replace(Resource.Id.crealtabcontent, objFrg, "MyFrgTag").AddToBackStack("myFrgBackStack");
            fragmentTx.Commit();            
        };
    }
}

Ваш фрагмент должен выглядеть следующим образом

public class MyFragment :Android.Support.V4.App.Fragment
{

}

Для получения кликаемого элемента используйте метод position из OnBindViewHolder._activity - это действие, которое вы должны пройти при вызове вашего адаптера следующим образом

var fvrtAdapter = new FavouritesPageAdapter(this.Activity,favourites,recyclerView);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...