Xamarin、RecyclerViewのitemClickの新しいアクティビティ

トルニケゴマレリ

学習目的でマスターと詳細のアプリケーションを作成しようとしています。

recyclerviewで、アイテムをクリックすると、新しいアクティビティを開始し、新しいアクティビティにデータを送信します。

リストビューの例で作成していましたが、ここで苦労しました。

これは私のアダプターです

using Android.App;
using Android.Widget;
using Android.OS;
using System.Threading.Tasks;
using System;
using System.Threading;
using System.Collections.Generic;
using Android.Content;
using Newtonsoft.Json;
using Petrolium.DataObjects;
using Petrolium.Utilities;
using Petrolium.Activities;
using Android.Support.V7.Widget;
using Android.Views;
using static Android.Support.V7.Widget.RecyclerView;

namespace Petrolium.Adapters
{
    public class CompanyRecyclerAdapter : RecyclerView.Adapter
    {
        static List<Company> _companies = new List<Company>();
        public CompanyRecyclerAdapter(Context context, List<Company> companies) => _companies = companies;

        public override int ItemCount => _companies.Count;

        private class CompanyViewHolder : ViewHolder
        {
            public ImageView companyImageView
            {
                get;
                set;
            }

            public TextView companyNameView
            {
                get;
                set;
            }

            public CompanyViewHolder(View itemView) : base(itemView)
            {

                companyImageView = itemView.FindViewById<ImageView>(Resource.Id.company_image);
                companyNameView = itemView.FindViewById<TextView>(Resource.Id.company_name);

                itemView.Click += (sender, e) =>
                {
                    var context = itemView.Context;
                    Intent intent = new Intent(context, typeof(DetailsActivity));
                    intent.PutExtra(GetText(Resource.String.DetailsStringToJSON),
                                    JsonConvert.SerializeObject(_companies[e.Position].Fuels));

                    StartActivity(intent);
                };
            }
        }


        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            CompanyViewHolder vh = holder as CompanyViewHolder;

            vh.companyImageView.SetImageResource(Resource.Drawable.gulf);
            vh.companyNameView.Text = _companies[position].Name; 
        }

        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            View itemview = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.Company, parent, false);
            CompanyViewHolder vh = new CompanyViewHolder(itemview);

            return vh;
        }
    }
}

しかし、GetTextメソッドもありません。Positionフィールドまたはプロパティはありません。また、私の意図を渡すためのStartActivityメソッドはありません。

recyclerViewでitemClickを作成し、新しいアクティビティを開始するためのベストプラクティスは何ですか?この問題を処理する方法は?

私はAndroid開発の初心者です。簡単なことを質問している場合は、申し訳ありません。

低い場所

あなたはViewHolderただのクリックイベントを渡すべきであるAdapterに戻って、その後FragmentまたはActivityイベントを処理します。

public CompanyViewHolder(View itemView, Action<int> listener) : base(itemView)
{
    companyImageView = itemView.FindViewById<ImageView>(Resource.Id.company_image);
    companyNameView = itemView.FindViewById<TextView>(Resource.Id.company_name);

    itemView.Click += (sender, e) => listener (base.LayoutPosition);
}

次に、アダプタに、フラグメントまたはアクティビティをバインドさせるイベントが必要です。

public class CompanyRecyclerAdapter : RecyclerView.Adapter
{
    public event EventHandler<int> ItemClick;

    void OnClick(int position)
    {
        if (ItemClick != null)
            ItemClick(this, position);
    }

    ...

    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        View itemview = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.Company, parent, false);
        CompanyViewHolder vh = new CompanyViewHolder(itemview, OnClick);

        return vh;
    }
}

次に、最後にフラグメントまたはアクティビティで、アダプタのItemClickイベントにバインドして処理できます。

mAdapter = new CompanyRecyclerAdapter(mPhotoAlbum);
mAdapter.ItemClick += OnItemClick;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

MVPの新しいアクティビティの初期化

分類Dev

recyclerview行内のアイテムから新しいアクティビティを呼び出す

分類Dev

Android Xamarinは、プッシュ通知を作成して新しいアクティビティを作成せず、現在のアクティビティを使用します

分類Dev

元のアクティビティで新しいアクティビティを開き、元のアクティビティを終了します

分類Dev

新しいアクティビティへの移行中にアクティビティが再作成される

分類Dev

Xamarin.androidの通知onClickは新しいアクティビティを実行しません

分類Dev

Androidは、バックスタック内の別のアクティビティの前に新しいアクティビティを開始し、古いアクティビティより上のアクティビティをクリアします

分類Dev

Eclipse、ボタンクリックの新しいアクティビティ

分類Dev

Androidの新しいアクティビティの開始エラー

分類Dev

すべてのアクティビティを閉じて、Androidの新しいタスクで新しいアクティビティを開始する方法

分類Dev

KotlinのAsyncTaskで新しいアクティビティを起動します

分類Dev

新しいアクティビティを開始するときのNullPointerException

分類Dev

新しいアクティビティを開始するときのNullPointerException

分類Dev

Androidの新しいアクティビティに整数を渡す方法は?

分類Dev

新しいアクティビティAndroidに入るときのエラー

分類Dev

ボレーのonResponseで新しいアクティビティを開く方法

分類Dev

通知をクリックして新しいアクティビティを開いた後、前のアクティビティを閉じる方法

分類Dev

AndroidのXamarinでPayPalSDKを使用した明示的なアクティビティクラスの支払いアクティビティが見つかりません

分類Dev

別のフラグメントに新しいデータを追加した後、アクティビティのRecyclerViewを更新します

分類Dev

onclick リスナーの recyclerview を設定し、クリックするたびに新しいアクティビティを開始する方法

分類Dev

ビューページャーのアクティビティから新しいアクティビティを開始しますか?

分類Dev

RecycleViewの新しいアクティビティで誤ってクリックされたアイテム

分類Dev

通知は、以前のアクティビティを再開するのではなく、常に新しいアクティビティを作成します

分類Dev

Androidの「singleTask」アクティビティは、アクティビティの新しいインスタンスを作成します

分類Dev

recyclerviewでのアクティビティの結果の問題

分類Dev

recyclerviewでのアクティビティの結果の問題

分類Dev

アクティビティでのRecyclerViewのonCLickListenerの定義

分類Dev

新しいアクティビティを開始しても、現在のアクティビティは一時停止しません

分類Dev

Androidのインテント-新しいアクティビティの一部のみを表示する

Related 関連記事

  1. 1

    MVPの新しいアクティビティの初期化

  2. 2

    recyclerview行内のアイテムから新しいアクティビティを呼び出す

  3. 3

    Android Xamarinは、プッシュ通知を作成して新しいアクティビティを作成せず、現在のアクティビティを使用します

  4. 4

    元のアクティビティで新しいアクティビティを開き、元のアクティビティを終了します

  5. 5

    新しいアクティビティへの移行中にアクティビティが再作成される

  6. 6

    Xamarin.androidの通知onClickは新しいアクティビティを実行しません

  7. 7

    Androidは、バックスタック内の別のアクティビティの前に新しいアクティビティを開始し、古いアクティビティより上のアクティビティをクリアします

  8. 8

    Eclipse、ボタンクリックの新しいアクティビティ

  9. 9

    Androidの新しいアクティビティの開始エラー

  10. 10

    すべてのアクティビティを閉じて、Androidの新しいタスクで新しいアクティビティを開始する方法

  11. 11

    KotlinのAsyncTaskで新しいアクティビティを起動します

  12. 12

    新しいアクティビティを開始するときのNullPointerException

  13. 13

    新しいアクティビティを開始するときのNullPointerException

  14. 14

    Androidの新しいアクティビティに整数を渡す方法は?

  15. 15

    新しいアクティビティAndroidに入るときのエラー

  16. 16

    ボレーのonResponseで新しいアクティビティを開く方法

  17. 17

    通知をクリックして新しいアクティビティを開いた後、前のアクティビティを閉じる方法

  18. 18

    AndroidのXamarinでPayPalSDKを使用した明示的なアクティビティクラスの支払いアクティビティが見つかりません

  19. 19

    別のフラグメントに新しいデータを追加した後、アクティビティのRecyclerViewを更新します

  20. 20

    onclick リスナーの recyclerview を設定し、クリックするたびに新しいアクティビティを開始する方法

  21. 21

    ビューページャーのアクティビティから新しいアクティビティを開始しますか?

  22. 22

    RecycleViewの新しいアクティビティで誤ってクリックされたアイテム

  23. 23

    通知は、以前のアクティビティを再開するのではなく、常に新しいアクティビティを作成します

  24. 24

    Androidの「singleTask」アクティビティは、アクティビティの新しいインスタンスを作成します

  25. 25

    recyclerviewでのアクティビティの結果の問題

  26. 26

    recyclerviewでのアクティビティの結果の問題

  27. 27

    アクティビティでのRecyclerViewのonCLickListenerの定義

  28. 28

    新しいアクティビティを開始しても、現在のアクティビティは一時停止しません

  29. 29

    Androidのインテント-新しいアクティビティの一部のみを表示する

ホットタグ

アーカイブ