Я пытаюсь сделать элементы в обзоре переработчиков кликабельными. Я думаю, что я все сделал правильно в классе адаптера, но в домашнем фрагменте я получаю подчеркнутый [getActivity (), mCategory] cAdapter = new CategoryAdapter(getActivity(), mCategory);
Ниже приведен класс адаптера
public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.ImageViewHolder> {
private Context pContext;
private List<Category> mCategory;
private OnItemClickListener conItemClickListener;
public CategoryAdapter(Context pContext, List<Category> mCategory,OnItemClickListener onItemClickListener) {
this.pContext = pContext;
this.mCategory = mCategory;
this.conItemClickListener = onItemClickListener;
}
public CategoryAdapter(ArrayList<Category> mCategory, OnItemClickListener onItemClickListener) {
this.mCategory = mCategory;
this.conItemClickListener = onItemClickListener;
}
@NonNull
@Override
public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.category_item, parent, false);
return new ImageViewHolder(v, conItemClickListener);
}
@Override
public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
Category categoryCur = mCategory.get(position);
holder.cattitle.setText(categoryCur.getCatname());
holder.cattitle.setBackgroundColor(Color.parseColor(categoryCur.getCatbg()));
holder.iconWrapper.setBackgroundColor(Color.parseColor(categoryCur.getCatbg()));
Picasso.get()
.load(categoryCur.getCaticon())
.placeholder(R.drawable.img_placeholder)
.fit()
.centerCrop()
.into(holder.imgicon);
}
@Override
public int getItemCount() {
return mCategory.size();
}
class ImageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView cattitle;
ImageView imgicon;
LinearLayout iconWrapper;
OnItemClickListener itemClickListener;
ImageViewHolder(@NonNull View itemView, OnItemClickListener itemClickListener) {
super(itemView);
cattitle = itemView.findViewById(R.id.cattName);
imgicon = itemView.findViewById(R.id.catIcon);
iconWrapper = itemView.findViewById(R.id.iconWrapper);
this.itemClickListener = itemClickListener;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
itemClickListener.onItemClick(getAdapterPosition());
}
}
public interface OnItemClickListener{
void onItemClick(int position);
}
}
И мой фрагмент Home приведен ниже
public class HomeFragment extends Fragment implements CategoryAdapter.OnItemClickListener {
private ViewPager mViewTop;
private TabLayout mTabLayout;
private static final int[] mResources = {
R.drawable.axs,
R.drawable.banner,
R.drawable.e,
R.drawable.unnamed,
R.drawable.w,
R.drawable.women,
R.drawable.tes,
R.drawable.qww,
R.drawable.dribbble
};
private int count = 0;
private RecyclerView nRecycleView, cRecyclerView;
private PopularAdapter nAdapter;
private CategoryAdapter cAdapter;
private ArrayList<Category> mCategory;
private List<Popular> mPopular;
private DatabaseReference dbRef;
private DatabaseReference logReference;
private FirebaseAuth firebaseAuth;
private FirebaseUser firebaseUser;
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
mViewTop = view.findViewById(R.id.imgBanner);
cRecyclerView = view.findViewById(R.id.category_view);
nRecycleView = view.findViewById(R.id.recycler_view);
loadEntries();
cAdapter = new CategoryAdapter(mCategory,this);
cRecyclerView.setAdapter(cAdapter);
nAdapter = new PopularAdapter(mPopular);
nRecycleView.setAdapter(nAdapter);
nRecycleView.setHasFixedSize(true);
nRecycleView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false));
RecyclerView.LayoutManager cLayoutmanager = new GridLayoutManager(getActivity(), 2);
cRecyclerView.setLayoutManager(cLayoutmanager);
mViewTop.setAdapter(new TopPagerAdapter(getContext()));
TabLayout tabLayout = view.findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(mViewTop, true);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (count < 9) {
mViewTop.setCurrentItem(count);
count++;
} else {
count = 0;
mViewTop.setCurrentItem(count);
}
}
});
}
}, 500, 3000);
getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
return view;
}
private void loadEntries() {
mCategory = new ArrayList<>();
dbRef = FirebaseDatabase.getInstance().getReference("Category");
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Category category = postSnapshot.getValue(Category.class);
mCategory.add(category);
}
cAdapter = new CategoryAdapter(getActivity(), mCategory);
cRecyclerView.setAdapter(cAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
mPopular = new ArrayList<>();
dbRef = FirebaseDatabase.getInstance().getReference("popular");
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Popular popular = postSnapshot.getValue(Popular.class);
mPopular.add(popular);
}
nAdapter = new PopularAdapter(getActivity(), mPopular);
nRecycleView.setAdapter(nAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onItemClick(int position) {
Intent i = new Intent (getActivity(), SettingsActivity.class);
}
class TopPagerAdapter extends PagerAdapter {
Context mContext;
LayoutInflater mLayoutInflater;
TopPagerAdapter(Context context) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return mResources.length;
}
@Override
public boolean isViewFromObject(@NotNull View view, @NotNull Object object) {
return view == ((LinearLayout) object);
}
@NotNull
@Override
public Object instantiateItem(@NotNull ViewGroup container, int position) {
View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false);
ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
imageView.setImageResource(mResources[position]);
container.addView(itemView);
return itemView;
}
@Override
public void destroyItem(@NotNull ViewGroup container, int position, @NotNull Object object) {
container.removeView((LinearLayout) object);
}
}
}
Эта ошибка вызвала большой спор и действительно нуждается в большой помощи.