2016-04-29 20 views
0

アンドロイドプログラミングを開始しました。アダプタから別のアクティビティにデータを送信しようとしたときに問題が発生しました 。 アイテムをクリックすると、他のアクティビティで "description"のコンテンツを表示したいと思います。RecyclerViewのインテントに問題がある

MyAdapterクラス:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { 

    private final List<FakeNews> list = FakeNewsList.all; 

    @Override 
    public int getItemCount() { 
     return list.size(); 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     View view = inflater.inflate(R.layout.list_cell, parent, false); 
     return new MyViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
     FakeNews pair = list.get(position); 
     holder.display(pair); 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 

     private final TextView name; 
     private final TextView description; 

     private FakeNews currentPair; 

     public MyViewHolder(final View itemView) { 
      super(itemView); 

      name = ((TextView) itemView.findViewById(R.id.name)); 
      description = ((TextView) itemView.findViewById(R.id.description)); 

      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

        Intent intent = new Intent(MyViewHolder.this ,Affich.class); 
        intent.putExtra("description", String.valueOf((description))); 
        startActivity(intent); 



       } 
      }); 
     } 

     public void display(FakeNews pair) { 
      currentPair = pair; 
      name.setText(pair.title); 

     } 
    } 

} 

誰かが私を助けることができますか?

答えて

0

ようmContext使用されている間それ。また、あなたが意図してstartActivity()Contextを渡す必要が活動する方法であるので、あなたは、コンテキストにそれを呼び出す必要があります。

itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent intent = new Intent(view.getContext() ,Affich.class); 
      intent.putExtra("description", description.getText().toString()); 
      view.getContext().startActivity(intent); 
     } 
    }); 
0

ContextまたはActivityインスタンスをアダプタクラスに渡します。

、新しいActivityを開始すると仮定するインスタンス変数は、私はあなたが本当にあなたの次のアクティビティにTextViewを渡したくないことを前提としていますが、中に示されているコンテンツthis-

Intent intent = new Intent(mContext ,Affich.class); 
intent.putExtra("description", String.valueOf((description))); 
mContext.startActivity(intent); 
0

これを行う、TextViewからあなたの新しい活動に値を渡すには:あなたの新しい活動の

intent.putExtra("description", description.getText().toString());

、使用説明値を取得する:

String descriptionValue = getIntent().getStringExtra("description");

関連する問題