2017-10-24 8 views
-1

私はrecyclerviewでクリックしたアイテムを別のフラグメントに転送したいと思います。私は自分のrecyclerビューでクリックしたデータを別のフラグメントに転送する方法を知らない。ここに私のコードです。データはJSONのものです。Android RecyclerView onClick with JSON

public void onBindViewHolder(ViewHolder holder, int position) { 
    final ListItem listItem = listItems.get(position); 

    holder.textViewHead.setText(listItem.getHead()); 
    holder.textViewDesc.setText(listItem.getDesc()); 
    Picasso.with(context) 
      .load(listItem.getImgUrl()) 
      .into(holder.imageViewElliptic); 
    holder.relativeLayout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(context, "You clicked " + listItem.getHead(), Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 
+0

フラグメント間でデータを転送したい場合や、相対レイアウトの別のフラグメントをコールする方法を教えてください。 –

+0

クリックすると、別のフラグメントに転送するためにクリックしたjsonデータが必要です。私はどのようにわからない。私はまだ初心者です。 –

答えて

0

さて、最初にあなたはListでまたは他のアクセス可能なデータオブジェクトのいずれかにデータを保存する必要があり、あなたがあなたのアダプターを作成したので、私はすでにあなたがそれをやっていると思います。

さて、あなたはこのラインを持っている:

public void onBindViewHolder(ViewHolder holder, int position) { 

あなたはこのように、方法が提供する位置を使用してListまたは何か他のものからデータを取得することができます。

YourJsonData data = yourDataSource.get(holder.getAdapterPosition()); 

ますので、 onClickListenerを使用している場合は、positionと直接電話をかけてはいけません。これは問題の原因となる可能性があります。

は例えば、私のプロジェクトで、私は私のデータソースとしてLesson[]を使用します。

https://github.com/gi097/MyWindesheim/blob/master/app/src/main/java/com/giovanniterlingen/windesheim/view/Adapters/ScheduleAdapter.java

あなたがデータを取得したら、あなたのための断片を作成する新しいActivityできIntent。また、既にFragmentが存在する場合は、Activityに通知して更新することができます。を更新します。

0

onClickで使用Intentし、次の活動

Intent intent = new Intent(context, AnotherActivity.class); 
intent.putExtra("model", arrayList.get(position)); 
context.startActivity(intent); 

に全体ArrayListを送信し、このコードスニペットを使用して、次Activityでそれを受け取ります。

Intent i = getIntent(); 

    ArrayModel arrayModel = (ArrayModel) i.getSerializableExtra("model"); 
    if (arrayModel != null) { 
     String head = arrayModel.getHead(); 
     Log.d("HEAD", head); 
    }