Here is my code of Adapter Class -
package com.referral.abhin.myapplication;
import android.app.Activity;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.preference.Preference;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView;
import android.text.method.SingleLineTransformationMethod;
import android.util.Base64;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import static android.content.Context.MODE_PRIVATE;
import static android.view.View.GONE;
public class postAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
List<post> objPost;
private FirebaseDatabase mFirebaseDatabaseCheck;
private DatabaseReference mMessagesDatabaseReferenceCheck;
private DatabaseReference mMessagesDatabaseReference_notification;
private FirebaseDatabase mFirebaseDatabaseComment;
private DatabaseReference mMessagesDatabaseReferenceComment;
private FirebaseDatabase mFirebaseDatabaseLikes;
private DatabaseReference mMessagesDatabaseReferenceLikes;
//Constructor - Get data passed in local list
public postAdapter(List<post> objectPost) {
objPost = objectPost;
}
//Inititalizing Shared Preference
SharedPreferences sharedPreferences;
private static final String SHARED_PREF = "sharedPref";
// @Override
// public post getItem(int position) {
// return super.getItem(getCount() - position - 1);
// }
// private final View.OnClickListener mOnClickListener = new MyOnClickListener();
// @Override
// public class ViewHolder extends RecyclerView.ViewHolder{
//
// LayoutInflater inflater = LayoutInflater.from(parent.getContext());
// View view = inflater.inflate(R.layout.itemsinpost, parent, false);
// view.setOnClickListener(mOnClickListener);
// return new postViewHolder(view);
//
// public ViewHolder(View itemView) {
// super(itemView);
// }
// }
//nested class with holder
public class postViewHolder extends RecyclerView.ViewHolder{
TextView companyObj;
TextView locationObj;
TextView categoryObj;
TextView salaryObj;
TextView dateView;
LinearLayout itemsInRecyclerView;
public postViewHolder(View listItemView){
super(listItemView);
companyObj = listItemView.findViewById(R.id.company);
locationObj = listItemView.findViewById(R.id.location);
categoryObj = listItemView.findViewById(R.id.category);
salaryObj = listItemView.findViewById(R.id.salary);
dateView = listItemView.findViewById(R.id.dateTime);
itemsInRecyclerView = listItemView.findViewById(R.id.listViewLayout);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itemsinpost,parent,false);
postViewHolder holder = new postViewHolder(view);
return null;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
final post objectFile = objPost.get(position);
//Firebase to update Like, Report value and also get called on delete button
mFirebaseDatabaseLikes = FirebaseDatabase.getInstance();
mMessagesDatabaseReferenceLikes = mFirebaseDatabaseLikes.getReference().child("counter");
//Firebase reference called only to update number of comments
mFirebaseDatabaseComment = FirebaseDatabase.getInstance();
mMessagesDatabaseReferenceComment = mFirebaseDatabaseComment.getReference().child("comments");
//Firebase reference to check if the user has already liked the post or not
mFirebaseDatabaseCheck = FirebaseDatabase.getInstance();
mMessagesDatabaseReferenceCheck = mFirebaseDatabaseCheck.getReference().child("check_counter");
//segregate email to userID
String[] emailSegregate = sharedPreferences.getString("email", "anonymous").split("@");
String emailID = emailSegregate[0];
mMessagesDatabaseReference_notification = mFirebaseDatabaseCheck
.getReference()
.child("notification_list")
.child(emailID)
.child(objectFile.getnodeId());
if (objectFile.getType().equals("post"))
{
holder.companyObj.setText(objectFile.getCompany());
holder.companyObj.setVisibility(View.VISIBLE);
holder.locationObj.setText("Location : " + objectFile.getLocation());
holder.locationObj.setVisibility(View.VISIBLE);
holder.categoryObj.setText(objectFile.getField());
holder.categoryObj.setVisibility(View.VISIBLE);
//if package is not empty
if(!objectFile.getminPack().isEmpty() && !objectFile.getminPack().equals("0")) {
//if work exp is not empty
if (!objectFile.getworkExp().isEmpty()) {
holder.salaryObj.setText("₹ " + objectFile.getminPack() + " LPA, " + objectFile.getworkExp() + "+ Years of Work Exp.");
}
//if work exp is empty
else {
holder.salaryObj.setText("₹ " + objectFile.getminPack() + " LPA, " + " Freshers Allowed");
}
}
//if package is empty
else{
//if work exp is not empty
if (!objectFile.getworkExp().isEmpty()) {
holder.salaryObj.setText(objectFile.getworkExp() + "+ Years of Work Exp.");
}
//if work exp is empty
else {
holder.salaryObj.setText("Freshers Allowed");
}
}
holder.salaryObj.setVisibility(View.VISIBLE);
} else
{
holder.companyObj.setText("");
holder.companyObj.setVisibility(GONE);
holder.salaryObj.setText("");
holder.salaryObj.setVisibility(GONE);
holder.locationObj.setText("");
holder.locationObj.setVisibility(GONE);
holder.categoryObj.setText(objectFile.getPost());
holder.categoryObj.setVisibility(View.VISIBLE);
}
// TextView usernameObj = listItemView.findViewById(R.id.username);
// usernameObj.setText(objectFile.getName()); //displays name while username is email address saved in database
final String[] data = objectFile.getDate().split(" ");
String dateReceived = data[0];
String timeReceived = data[1] + " " + data[2];
String[] dateSegregate = dateReceived.split("/");
int d = Integer.parseInt(dateSegregate[0]);
int m = Integer.parseInt(dateSegregate[1]);
int y = Integer.parseInt(dateSegregate[2]);
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
if (date == d && month == m && year == y)
{
holder.dateView.setText(timeReceived);
} else if (d == (date - 1) && month == m && year == y)
{
holder.dateView.setText("Yesterday");
} else
{
holder.dateView.setText(dateReceived);
}
}
@Override
public int getItemCount() {
return objPost.size();
}
}
Here is the error -
how can it be resolved? I have added the code according to this tutorial where it is working fine.
why is it not picking up companyObj when I have already declared View Holder?
Your holder should be cast to your type postViewHolder
look at argument type of onBindViewHolder method.
It is just RecyclerView.ViewHolder type.
You can change this argument type with changing definition of Adapter class in generic part
<RecyclerView.ViewHolder> -> <postViewHolder>
Change this lines to this
public class postAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
to
public class postAdapter extends RecyclerView.Adapter<postAdapter. postViewHolder>{
Then update this code
@NonNull
@Override
public postAdapter.postViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itemsinpost,parent,false);
// postViewHolder holder = new postViewHolder(view);
return new postViewHolder(view);;
}
@Override
public void onBindViewHolder(@NonNull postAdapter.postViewHolder holder, int position) {
Hope this will help to solve your problem.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.