2016-06-20 2 views
0

Ich habe OnClickListener in RecyclerView implementiert. Wenn ein bestimmter Gegenstand angeklickt wird, muss eine neue Tätigkeit beginnen, wo die detaillierten Informationen über den Gegenstand präsentiert werden. Wie kann ich es tun?Wie können Sie Extras in die in RecyclerView OnClickListener genannte Absicht übertragen?

Mein Code:

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

private String[] data; 
public Context context; 

public RecyclerViewAdapter(String[] input, Context c) { 
    data = input; 
    context = c; 
} 

public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
    public MyOnItemClickListener listener; 
    public TextView mTextView; 
    public Context cont; 

    public MyViewHolder(View v, MyOnItemClickListener l, Context c) { 
     super(v); 
     mTextView = (TextView) v.findViewById(R.id.info_text); 
     listener = l; 
     cont = c; 
     v.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     listener.startActivity(cont); 
     /* below is my attempt that did not work */ 
     Intent intent = new Intent(cont, ItemInformationActivity.class); 
     intent.putExtra("Text", mTextView.toString()); 
     cont.startActivity(intent); 
    } 

    public static interface MyOnItemClickListener { 
     public void startActivity(Context c); 
    } 
} 

@Override 
public RecyclerViewAdapter.MyViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view_item, parent, false); 
    MyViewHolder vh = new MyViewHolder(v, new MyViewHolder.MyOnItemClickListener() { 
     @Override 
     public void startActivity(Context c) { 
      Toast.makeText(c, "Item Pressed!", Toast.LENGTH_SHORT).show(); 
      /* tried the same here */ 
     } 
    }, context); 
    return vh; 
} 

@Override 
public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position) { 
    holder.mTextView.setText(data[position]); 
} 

@Override 
public int getItemCount() { 
    return data.length; 
} 
} 

Antwort

1

diese Linie

ersetzen
intent.putExtra("Text", mTextView.toString()); 

mit

intent.putExtra("Text", ((TextView) v.findViewById(R.id.info_text)).getText().toString()); 
+0

Dank! Jetzt funktioniert es. – Marat

Verwandte Themen