Я пробовал много вариантов и решений, но я все еще не могу получить событие Click на ViewHolder. то есть viewHolder.mView.setOnClickListener
не работает во фрагменте. Я использовал тот же код в действии, и он отлично работает, но не во фрагменте.
градиентная зависимость:
implementation 'com.android.support:recyclerview-v7:26.1.0' <br>
implementation 'com.firebaseui:firebase-ui-database:2.3.0'
Код:
public class OffersFragment extends Fragment {
private View mMainView;
private RecyclerView mBusinessOffersList;
private RecyclerView.LayoutManager mLayoutManager;
public OffersFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mMainView = inflater.inflate(R.layout.fragment_offers, container, false);
//------Recyclerview to show Business Gallery ------------//
mBusinessOffersList = mMainView.findViewById(R.id.businessOffersList);
mBusinessOffersList.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mBusinessOffersList.setLayoutManager(mLayoutManager);
.
.
.
if(currentUser!=null && mBusinessUserID != null){
mdatabaseOffers = FirebaseDatabase.getInstance().getReference().child("Offers")
.child(BusinessCity).child(mBusinessUserID);
}
return mMainView;
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter <EshopOffers, BusinessOffersViewHolder> mfirebaseRecycleAdapter = new FirebaseRecyclerAdapter<EshopOffers, BusinessOffersViewHolder>
( EshopOffers.class,
R.layout.shop_offerslist_layout,
BusinessOffersViewHolder.class,
mdatabaseOffers) {
@Override
protected void populateViewHolder(final BusinessOffersViewHolder viewHolder, EshopOffers model, int position) {
//---tried--Method 1: Open new Activity on CLick----but no luck--------//
viewHolder.mView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getActivity(), "Item Clicked", Toast.LENGTH_LONG).show();
}
});
}
};mBusinessOffersList.setAdapter(mfirebaseRecycleAdapter);
}
public static class BusinessOffersViewHolder extends RecyclerView.ViewHolder {
View mView;
public LinearLayout offerLayout;
ImageView offerImage1;
LinearLayout offerLayout2;
// public RelativeLayout offerRLlayout;
public BusinessOffersViewHolder(View itemView) {
super(itemView);
mView = itemView;
//---tried--Method 2: Open new Activity on CLick----but no luck--------//
itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.i("View Clicked", "View Clicked");
}
});
}
}
}
Я пробовал большинство решений из: RecyclerView onClick и как реализовать SetOnItemClickListener FirebaseRecyclerViewAdapter, но не повезло. :(
Я ломал голову почти 2 дня 3 ночи, но все равно никуда не денусь ... :( так что теперь нужна ваша помощь ..!
RecyclerView
с помощьюFirebaseRecyclerAdapter
. - person Alex Mamo   schedule 13.08.2018FirebaseRecyclerAdapter
. моя проблема в том, что `viewHolder.mView.setOnClickListener' не работает во фрагменте. Вышеприведенный код отлично работает в Activity. есть что-то, что представление viewHolder недоступно во фрагменте. Даже нет никаких ошибок или предупреждений, когда я использую setOnClickListener на этом VH. - person AH1702   schedule 14.08.2018