2017-02-03 9 views
0

現在、私はRecyclerViewを持っており、Activity2/activity2.xmlを開きます。 activity2.xmlにはテキストビューがあります。Android - RecyclerViewでクリックされた位置に応じてテキストビューを更新します。

私の質問:私のrecyclerviewでどのアイテムがクリックされたかによって、activity2.xmlにテキストを設定するにはどうすればよいですか?私もイメージを設定するが、それは今待つことができます。

View.OnClickListenerを実装するRecyclerView.ViewHolderを使用しています。 は、ここに私のRecyclerView.Adapter

RecyclerPracticeAdapter.java

public class RecyclerPracticeAdapter extends RecyclerView.Adapter<MyViewHolder> { 

Context c; 
ArrayList<Category> category; 

public RecyclerPracticeAdapter(Context c, ArrayList<Category> category) { 
    this.c = c; 
    this.category = category; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.model, null); 
    MyViewHolder holder = new MyViewHolder(v); 
    return holder; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    holder.nameTxt.setText(category.get(position).getName()); 
    holder.img.setImageResource(category.get(position).getImage()); 

    //Listners 
    //THIS IS WHERE YOU CAN CHOOSE TO OPEN A ACTIVITY WHEN USER CLICK ON A CARDVIEW!! 
    holder.setItemClickListener(new ItemClickListener() { 


     @Override 
     public void onItemClick(View v, int pos) { 
      switch (pos) { 
       case 0: 
        // Open New Activity...... 
        // THIS IS WHERE I WANT TO CHANGE TEXT activity2.xml 
        Intent intent=new Intent(v.getContext(),Activity2.class); 
        v.getContext().startActivity(intent); 

        break; 
       case 1: 
        Intent intent=new Intent(v.getContext(),Activity2.class); 
        v.getContext().startActivity(intent); 

        break; 


      } 

     } 
    }); 
} 

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

activity2.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Update Text" 
     android:id="@+id/txt_update" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center_horizontal" /> 

</RelativeLayout> 

は、誰かが正しい方向に私をポイントしてくださいできますか?

EDIT :::

MyViewHolder:

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

public ImageView img; 
public TextView nameTxt; 
ItemClickListener itemClickListener; 

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

    nameTxt= (TextView) itemView.findViewById(R.id.nameTxt); 
    img= (ImageView) itemView.findViewById(R.id.ppImage); 

    itemView.setOnClickListener(this); 

} 

public void setItemClickListener(ItemClickListener ic){ 

    this.itemClickListener=ic; 
} 

@Override 
public void onClick(View v) { 
    this.itemClickListener.onItemClick(v,getLayoutPosition()); 
} 
} 

カテゴリ:商品ののonClickに意図してデータ1.Pass

public class Category { 

private int name; 
private int image; 



public Category(int name, int image) { 
    this.name = name; 
    this.image = image; 


} 


public int getName() { 
    return name; 
} 

public void setName(int name) { 
    this.name = name; 
} 

public int getImage() { 
    return image; 
} 

public void setImage(int image) { 
    this.image = image; 
} 
} 
+0

インテントでデータを渡すことができます – darwin

+0

どのテキストを渡す必要がありますか?クリックされたアイテムの位置ですか?それについてもっと教えてください、私はデータを渡すのに役立ちます! – OBX

+0

OBXクリックされた「ボタン」の説明です。私は例を使ってみましょう。私のrecycleViewには "Tennis"のアイテムがあり、次のアクティビティでテニスのルールを説明したいと思いますが、RecyclerViewでクリックしたアイテムごとに同じアクティビティを使用します。 –

答えて

2

Intent intent=new Intent(v.getContext(),Activity2.class); 
intent.putExtra("YOUR_KEY", category.get(pos).getName()); 
v.getContext().startActivity(intent); 

2. Activity2のデータを取得します。

文字列updatevalue = getIntent()。getExtras()。のgetString( "値を" あなただけのデータに

Intent intent=new Intent(v.getContext(),Activity2.class); 
    intent.putExtra("value",category.get(pos).getName()); 
    v.getContext().startActivity(intent); 

に合格する必要があり、Activity2にあなたが値を取る必要があり

Bundle bundle = getIntent().getExtras(); 
if(bundle!=null){ 
    String text = bundle.getString("YOUR_KEY"); 
    if(text!=null) 
    YOUR_TEXT_VIEW.setText(text); 
} 
+0

私の 'strings.xml'からテキストを取得したいのですが? –

+0

私はこれを試して、textviewはまだ空白ですか? –

+0

'RecyclerPracticeAdapter.java'クラスを' MyViewHolder'クラスで投稿することができます –

0

); TextView.setText(updatevalue);

+0

たぶんあなたが私を助けることができる、私はまだ私の 'TextView'で表示する何も得ることができません –

関連する問題