ich an einem Projekt arbeite, die gehören Recyclerview
und Cursorloader
und wenn der Benutzer in recyclerview
auf ein Element klickt sollte sie die Daten von Einzelteil erhalten und neue Activity
starten .Aber stattdessen wird es mir eine Ausnahme geben Attempt to invoke interface method 'boolean android.database.Cursor.moveToPosition(int)' on a null object reference
Android Recyclerview OnClickListener arbeitet nicht mit Cursor
Mein Adapter:
public class Mainrow_Adapter extends CursorRecyclerViewAdapter<Mainrow_Adapter.ViewHolder>
{
Context context;
Cursor cursor;
public Mainrow_Adapter(Context context, Cursor cursor)
{
super(context, cursor);
this.cursor = cursor;
this.context = context;
}
@Override
public Mainrow_Adapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.mainrow_layout,parent,false);
ViewHolder viewHolder = new ViewHolder(view,context,cursor);
return viewHolder;
}
@Override
public void onBindViewHolder(Mainrow_Adapter.ViewHolder viewHolder, final Cursor cursor)
{
PersonDetails personDetails = PersonDetails.from(cursor);
AddLog addLog = new AddLog();
viewHolder.mName.setText(personDetails.getName());
NumberFormat currency = addLog.changeamount();
viewHolder.mAmount.setText(currency.format(personDetails.getAmount()));
}
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
TextView mName,mAmount;
Context context;
Cursor cursor;
public ViewHolder(View itemView,Context context,Cursor cursor) {
super(itemView);
this.context = context;
this.cursor = cursor;
itemView.setOnClickListener(this);
mName = (TextView)itemView.findViewById(R.id.mainrowname);
mAmount = (TextView)itemView.findViewById(R.id.mainrowAmount);
}
@Override
public void onClick(View view) {
int position = this.getAdapterPosition();
cursor.moveToPosition(position);
String name = cursor.getString(1);String mobile = cursor.getString(2);
String city = cursor.getString(3);String amount = cursor.getString(5);
Intent intent = new Intent(context,ViewLog.class);
intent.putExtra("Name",name);intent.putExtra("Mobile",mobile);
intent.putExtra("City",city);intent.putExtra("Amount",amount);
context.startActivity(intent);
Toast.makeText(context,String.valueOf(position), Toast.LENGTH_SHORT).show();
}
}
}
Cursor-Adapter:
ich würde wirklich schätzen, wenn jemand von euch eine bessere Lösung als diese, einen Onclicklistenter zu initiieren und den Cursor auf Items Position zu bekommen.
Danke