RecylerViewアダプタ内の変数とメソッドにアクセスできますか? 私はOnbindViewHolderに使用するアクティビティから変数にアクセスする必要があり、別のアクティビティのメソッドにもアクセスする必要があります。だから誰も私が使用しているコードが動作していないので、それを正しく行う方法を私に示すことができます。ここでRecyclerViewアダプタ内のアクティビティから変数とメソッドにアクセスする方法
は、RecyclerViewアダプタのコード
public class db_adapter extends RecyclerView.Adapter<db_adapter.pet_viewholder> implements View.OnLongClickListener, View.OnClickListener
{
ArrayList<db_getItem> items;
Context ctx;
HomeActivity homeActivity;
public db_adapter(Context ctx,ArrayList<db_getItem> items) {
this.items=items;
this.ctx=ctx;
homeActivity=(HomeActivity)ctx;
}
@Override
public pet_viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.reg_view_pet, parent, false);
return new pet_viewholder(view,homeActivity);
}
public void add(db_getItem pet) {
items.add(0, pet);
notifyItemInserted(0);
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public void onBindViewHolder(final pet_viewholder holder, final int position) {
holder.pet_name.setText(items.get(position).getPet_name());
holder.pet_breed.setText(items.get(position).getPet_breed());
holder.pet_age.setText(items.get(position).getPet_age());
holder.pet_bday.setText(items.get(position).getPet_bday());
String beagle="Beagle";
String bulldog="Bull Dog";
String chow="Chow chow";
String chihua="Chihuahua";
String german="German Shepherd";
String golden="Golden Retriever";
String havanese="Havanese";
String labrador="Labrador Retriever";
String shitzu="Shitzu";
String pug="Pug";
final String breed=items.get(position).getPet_breed();
if(beagle.equals(breed)){
holder.pet_image.setImageResource(R.drawable.beagle);
}else if(bulldog.equals(breed)){
holder.pet_image.setImageResource(R.drawable.bulldog);
}else if(chow.equals(breed)){
holder.pet_image.setImageResource(R.drawable.chow_chow);
}else if(chihua.equals(breed)){
holder.pet_image.setImageResource(R.drawable.chichua);
}else if(german.equals(breed)){
holder.pet_image.setImageResource(R.drawable.german_shepherd);
}else if(golden.equals(breed)){
holder.pet_image.setImageResource(R.drawable.golden_retriever);
}else if(havanese.equals(breed)){
holder.pet_image.setImageResource(R.drawable.havanese);
}else if(labrador.equals(breed)){
holder.pet_image.setImageResource(R.drawable.labrador);
}else if(pug.equals(breed)){
holder.pet_image.setImageResource(R.drawable.pug);
}else if(shitzu.equals(breed)) {
holder.pet_image.setImageResource(R.drawable.shitzu);
}
}
@Override
public boolean onLongClick(View v) {
return false;
}
@Override
public void onClick(View v) {
}
@Override
public int getItemCount() {
return items.size();
}
public static class pet_viewholder extends RecyclerView.ViewHolder {
CheckBox chregis_pet;
TextView pet_name;
TextView pet_breed;
TextView pet_age;
TextView pet_bday;
ImageView pet_image;
RecyclerView recyclerView;
View view;
CardView cardView;
HomeActivity homeActivity;
Context data_context;
public pet_viewholder(View itemView,Context data_context) {
super(itemView);
this.data_context=data_context;
this.homeActivity=(HomeActivity)data_context;
this.view=itemView.findViewById(R.id.view);
pet_name=(TextView)itemView.findViewById(R.id.name_pet);
pet_breed=(TextView)itemView.findViewById(R.id.breed_pet);
pet_age=(TextView)itemView.findViewById(R.id.age_pet);
pet_bday=(TextView)itemView.findViewById(R.id.bday_pet);
pet_image=(ImageView) itemView.findViewById(R.id.pic_breed);
recyclerView=(RecyclerView)itemView.findViewById(R.id.reg_pet);
cardView=(CardView)itemView.findViewById(R.id.pet_card);
chregis_pet=(CheckBox)itemView.findViewById(R.id.chkregis_pet);
}
}
}
あなたのアダプタを呼び出すアクティビティからのコールバックを渡します –
あなたはコード内のアクティビティを使用していません。何が問題なのですか? –