0

CardViewをプロジェクトに含める予定です。私はすでに私のプロジェクトにRecyclerViewとカードビューを含んでいます。問題は、私は各カードごとに異なる活動を呼びたいのです。私は各カードごとに異なる意図を実装しています。データを初期化する必要があります。これは私のオリジナルコードです:recyclerviewに別のインテントを含める方法

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { 

private Context context; 

private String[] titles = {"Add new Research", 
     "View Your Research"}; 

private String[] details = {"Add your research files here", 
     "View all of your posted research"}; 

private int[] images = { R.drawable.add, 
     R.drawable.view}; 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public int currentItem; 
    public ImageView itemImage; 
    public TextView itemTitle; 
    public TextView itemDetail; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     itemImage = (ImageView)itemView.findViewById(R.id.item_image); 
     itemTitle = (TextView)itemView.findViewById(R.id.item_title); 
     itemDetail = 
       (TextView)itemView.findViewById(R.id.item_detail); 

     itemView.setOnClickListener(new View.OnClickListener() { 
      @Override public void onClick(View v) { 
       int position = getAdapterPosition(); 
       Intent intent = new Intent(context, Choose.class); 

       if(position==0){ 
        intent = new Intent(context, AddFiles.class); 

       }else if(position==1){ 
        intent = new Intent(context, ViewFiles.class); 

       } 
       context.startActivity(intent); 
      } 
     }); 
    } 
} 

私がカードビューをクリックすると、私のプログラムが応答していないことが示されました。

私はまだ

Intent intent = null; 
if(position==0){ 
    intent = new Intent(context, AddFiles.class); 

    }else if(position==1){ 
    intent = new Intent(context, ViewFiles.class); 

    } 
    context.startActivity(intent); 

がエラーとして意図を初期化した場合でも、私は何をすべきでしょうか?またはそれを行うより良い方法があります。 これは私のlogcatエラーです。

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.user.mcormpelo, PID: 3645 
       java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
        at android.content.ComponentName.<init>(ComponentName.java:128) 
        at android.content.Intent.<init>(Intent.java:4449) 
        at com.example.user.mcormpelo.RecyclerAdapter$ViewHolder$1.onClick(RecyclerAdapter.java:46) 
        at android.view.View.performClick(View.java:5198) 
        at android.view.View$PerformClick.run(View.java:21147) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+1

コンテキストがnullです。それを初期化する。 –

+0

アプリケーション・コンテキストまたはクラス参照をコンテキストに渡し、アダプターを使用してアクティビティーを開始します。 –

+0

ありがとう:)問題を解決しました –

答えて

0

あなたはcontext

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { 

     private Context context; 

     public RecyclerAdapter(Context context) { 
      this.context = context; 
     } 

は、発信者の活動からActivityの参照を渡して初期化されませんでした。 サンプル使用

RecyclerAdapter rcAdapter = new RecyclerAdapter(MainActivity.this); 
+0

ありがとう。問題が解決しました:) –

関連する問題