2017-08-14 5 views
0

I 2つの活性を有する - A及びBの詳細は、ユーザがアイテムのリストおよび選択された項目から項目を選択Search ActivityまたはFragmentが活動に反映さ 2番目のアクティビティのRecyclerViewアイテムをAndroidの前のアクティビティに渡すにはどうすればよいですか?

B-

を更新さ

A- Detail Activity A

誰でもこの機能を実現するうえで効率的な方法を提案できますか?

+0

https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html とActviity Bは、startActivityForResult()を使用して、結果を得る起動時findViewHolderforLayoutPosition、findViewHolderForAdapterPosition – Salman500

+0

を見つけますActviity Aに戻る –

答えて

2
public interface OnItemClickListener { 
    void onItemClick(ContentItem item); 
} 

のようなあなたのアダプタ

private final List<ContentItem> items; 
private final OnItemClickListener listener; 

public ContentAdapter(List<ContentItem> items, OnItemClickListener listener) { 
    this.items = items; 
    this.listener = listener; 
} 



@Override public void onBindViewHolder(ViewHolder holder, int position) { 
    holder.bind(items.get(position), listener); 
} 


public void bind(final ContentItem item, final OnItemClickListener listener) { 
    ... 
    itemView.setOnClickListener(new View.OnClickListener() { 
     @Override public void onClick(View v) { 
      listener.onItemClick(item); 
     } 
    }); 
} 


// in your Activity 

recycler.setAdapter(new ContentAdapter(items, new ContentAdapter.OnItemClickListener() { 
    @Override public void onItemClick(ContentItem item) { 
     Intent i = new Intent(); 
     i.putExtra("key","value"); 
     startActivity(i) 
    } 
})); 

read more

0

あなたが戻ってあなたの親の活動に反映させることができ、あなたのフラグメントおよびフラグメントでactivity.Anyの変化との間で通信するためのインターフェイスを使用することができますフラグメントとしてBを使用している場合。

0

インテントを使用して、1つのアクティビティから別のアクティビティにデータを渡すことができます。あるアクティビティーを別のアクティビティーにナビゲートするインテントを呼び出すときは、データをバンドルまたは追加するだけです。上記のコードこの

Intent asd = new Intent(getApplicationContext, ActivityA.class); 
asd.putExtra(strName, STRING_I_NEED); 
startActitvity(asd); 

そしてActivityAにデータを取得するために、

Bundle extras = getIntent().getExtras(); 
if(extras == null) { 
    newString= null; 
} else { 
    newString= extras.getString("STRING_I_NEED"); 
} 
0

でこれを行うの2つの方法があります。

  1. あなたがちょうどあなたがA に戻って返すならば、あなたはserializableオブジェクトを使用し、その後の意図と一緒に にそれを渡すことができ、前方Bの活動へと 移動からのデータを渡す必要がし​​たい場合はもう一度onResumeメソッドで、 データのデータソースを再度呼び出すことができます。 Link

  2. startActivityForResult();アクティビティAでそれが開始されます BアクティビティとBから戻ると、自動的に開始します トリガonActivityResult(); Link

関連する問題