I am trying to implement get data from database into recycler view but run window shows no adapter attached.I have watched various tutorials,but nothing helps.I am new to android programming. Please help me to learn and correct my mistakes The code is as follows:
public class RecycleviewAdapter extends RecyclerView.Adapter<RecycleviewAdapter.RecyclerViewHolder>{
private Context mContext;
private Cursor mCursor;
public RecycleviewAdapter(Context context ,Cursor cursor){
mContext= context;
mCursor =cursor;
}
public class RecyclerViewHolder extends RecyclerView.ViewHolder{
public TextView time_data1;
public TextView activity_data;
public TextView location_data;
public RecyclerViewHolder(@NonNull View itemView) {
super(itemView);
location_data=itemView.findViewById(R.id.location_data);
activity_data=itemView.findViewById(R.id.activity_data);
time_data1=itemView.findViewById(R.id.time_data1);
}
}
@NonNull
@Override
public RecyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view=inflater.inflate(R.layout.recycle_item,parent,false);
return new RecyclerViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerViewHolder holder, int position) {
Package pkg = new Package();
if(!mCursor.move(position)){
return;
}
String time=mCursor.getString(1);
String name=mCursor.getString(2);
holder.location_data.setText(name);
holder.time_data1.setText(time);
if(pkg.getDst().equals(mCursor.getString(2))){
holder.activity_data.setText("Delivered");
}
else {
holder.activity_data.setText("In Transit");
}
}
@Override
public int getItemCount() {
return mCursor.getCount() ;
}
public void swapCursor(Cursor newCursor){
if(mCursor!=null){
mCursor.close();
}
mCursor=newCursor;
if(newCursor!=null){
notifyDataSetChanged();
}
}
}
For activity class
public class Track extends AppCompatActivity {
Database db = new Database(MySuperApplication.getContext());
private static final String TAG="MainActivity";
private RecycleviewAdapter mAdapter;
private TextView track_data;
private Button track_button;
private TextView textdata;
private TextView textdata2;
private TextView textdata3;
private TextView location;
// private TextView location_data;
// private TextView time_data1;
// private TextView activity_data;
// private TextView activity;
private TextView time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_track);
textdata= findViewById(R.id.textdata);
track_data=findViewById(R.id.title_track);
track_button= findViewById(R.id.trackbutton);
track_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(track_data.getText().toString().isEmpty()) {
openDialog1();
}
else{
Database db = new Database(MySuperApplication.getContext());
SQLiteDatabase databse=db.getReadableDatabase();
Cursor cursor = databse.rawQuery("Select * from tracking where track_id= ?",new String[]{track_data.getText().toString()});
// Cursor cursor = db.retrieveData();
Package pkg = new Package();
while(cursor.moveToNext()) {
pkg.setId(cursor.getString(0));
pkg.setSrc(cursor.getString(1));
pkg.setDst(cursor.getString(2));
pkg.setDimen(cursor.getString(3));
pkg.setWeight(cursor.getString(4));
pkg.setCreated(cursor.getString(5));
Toast.makeText(getApplicationContext(),"data"+cursor.getString(1),Toast.LENGTH_LONG).show();
}
Cursor cursor1 =databse.rawQuery("select * from track_info where track_id1 = ? order by name desc ",new String[]{pkg.getId()});
while (cursor1.moveToNext()){
RecyclerView recyclerView= findViewById(R.id.recycleview);
recyclerView.setLayoutManager(new LinearLayoutManager(MySuperApplication.getContext()));
mAdapter= new RecycleviewAdapter(MySuperApplication.getContext(),cursor1);
// Toast.makeText(getApplicationContext(),"data2"+cursor1.getString(cursor1.getColumnIndex(String.valueOf(1))),Toast.LENGTH_LONG).show();
}
Toast.makeText(getApplicationContext(),"data2"+pkg.getId(),Toast.LENGTH_LONG).show();
// Cursor cursor1= databse.rawQuery("select * from track_info where track_id = ? order by name desc",new String[]{pkg.getId()});
RelativeLayout relative= findViewById(R.id.relativeLayout1);
textdata2= findViewById(R.id.textdata2);
textdata3= findViewById(R.id.textdata3);
textdata2.setText("Dimension: "+pkg.getDimen()+" cm");
textdata3.setText("Weight: "+pkg.getWeight()+" kgs");
}
}
});
}
private void openDialog1() {
dialog dialog= new dialog();
dialog.show(getSupportFragmentManager(),"dialog");
}
}
Recycler xml:
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="408dp"
android:layout_height="453dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="3dp"
android:layout_marginLeft="3dp"
android:layout_marginBottom="0dp" />
recycle_item.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ffffff"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0">
<TextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="11dp"
android:text="Location" />
<TextView
android:id="@+id/location_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="71dp"
android:layout_marginLeft="71dp"
android:layout_marginTop="11dp"
android:text="TextView" />
<TextView
android:id="@+id/activity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="30dp"
android:text="Activity" />
<TextView
android:id="@+id/activity_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="71dp"
android:layout_marginLeft="71dp"
android:layout_marginTop="30dp"
android:text="TextView" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="50dp"
android:text="Date/Time" />
<TextView
android:id="@+id/time_data1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="71dp"
android:layout_marginLeft="71dp"
android:layout_marginTop="50dp"
/>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>