In meinem Projekt und inklusive Recyclerview und Karten ist das Problem, wenn ich Aktivitäten für jede der Karten aufrufen möchte. Ich versuche schon andere Mittel, aber ich kann mein Problem nicht lösen.RecyclerView mit Karten. Öffnen Sie neue Aktivität für jede Karten
RVAdapter.java
package com.example.ivann.card2;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;
/**
* Created by ivann on 15/03/2017.
*/
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {
private Context context;
public RVAdapter(Context context){
this.context = context;
}
public class PersonViewHolder extends RecyclerView.ViewHolder {
CardView cv;
TextView personName;
TextView personAge;
ImageView personPhoto;
public PersonViewHolder(View itemView) {
super(itemView);
cv = (CardView)itemView.findViewById(R.id.cv);
personName = (TextView)itemView.findViewById(R.id.person_name);
personAge = (TextView)itemView.findViewById(R.id.person_age);
personPhoto = (ImageView)itemView.findViewById(R.id.person_photo);
//Problem
itemView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
final Intent intent;
if (getAdapterPosition() == 0){
intent = new Intent(context, LaveryActivity.class);
} else if (getAdapterPosition() == 1){
intent = new Intent(context, emma.class);
} else {
intent = new Intent(context, lilie.class);
}
context.startActivity(intent);
}
});
}
}
List<Person> persons;
RVAdapter(List<Person> persons){
this.persons = persons;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
PersonViewHolder pvh = new PersonViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
personViewHolder.personName.setText(persons.get(i).name);
personViewHolder.personAge.setText(persons.get(i).age);
personViewHolder.personPhoto.setImageResource(persons.get(i).photoId);
}
@Override
public int getItemCount() {
return persons.size();
}
}
CardViewActivity.java
package com.example.ivann.card2;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class CardViewActivity extends Activity{
TextView personName;
TextView personAge;
ImageView personPhoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardview_activity);
personName = (TextView)findViewById(R.id.person_name);
personAge = (TextView)findViewById(R.id.person_age);
personPhoto = (ImageView)findViewById(R.id.person_photo);
personName.setText("Emma Wilson");
personAge.setText("23 years old");
personPhoto.setImageResource(R.drawable.emma);
}
}
Log
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ivann.card2, PID: 13042
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.<init>(ComponentName.java:128)
at android.content.Intent.<init>(Intent.java:4868)
at com.example.ivann.card2.RVAdapter$PersonViewHolder$1.onClick(RVAdapter.java:44)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Application terminated.
Das 'itemView.setOnClickListener' gut aussieht. Warum hast du es kommentiert? –