Ich habe einen "generischen" Adapter für 2 Listen, eine für den Namen des Verkäufers und eine andere für den Namen der Produkte, wenn ich auf einen beliebigen Punkt in der Liste ich richtig die Position in Die onClick-Methode jedoch, wenn ich senden will Die Methode listener.onClickPosition erreicht niemals das Fragment. dh es ist wie, wenn das Fragment die Schnittstelle nicht implementiert.Die Schnittstelle funktioniert nicht auf das Fragment
Hinweis mein Fragment ist in einem viewpager Ich weiß nicht, ob es etwas
Mein Adapter
public class AdapterRecyclerView extends
RecyclerView.Adapter<AdapterRecyclerView.AdapterRecyclerViewViewHolder>{
private static Context context;
private List items;
private String type;
private static OnClickAdapterRecyclerView listener;
public AdapterRecyclerView(List items, Fragment fragment,String type) {
this.items = items;
this.type =type;
listener = (OnClickAdapterRecyclerView) fragment;
}
@Override
public AdapterRecyclerViewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=null;
context=parent.getContext();
switch (type){
case SELLER:{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.seller_card, parent, false);
break;
}
case PRODUCTS:{
...
}
}
AdapterRecyclerViewViewHolder adapter = new AdapterRecyclerViewViewHolder(view);
return adapter;
}
@Override
public void onBindViewHolder(AdapterRecyclerViewViewHolder holder, int position) {
switch (type){
case SELLER:{
Seller seller = (Seller) items.get(position);
holder.binItem(seller);
break;
}
case PRODUCTS:{
...
}
}
}
@Override
public int getItemCount() {
return items.size();
}
public static class AdapterRecyclerViewViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView textViewNameProduct;
public TextView textViewNameSeller;
public AdapterRecyclerViewViewHolder(View v) {
super(v);
v.setOnClickListener(this);
switch (v.getId()){
case R.id.seller_card:{
textViewNameSeller = (TextView) v.findViewById(R.id.textViewNameSeller);
break;
}
case R.id.products_card:{
...
}
}
}
public void binItem(Seller seller){
textViewNameSeller.setText(product.getName());
}
public void binItem(Product product){
...
}
@Override
public void onClick(View v) {
//The position is printed correctly
Log.d("Position",getAdapterPosition()+"");
//Here this call does not work
listener.onClickPosition(getAdapterPosition());
}
}
public interface OnClickAdapterRecyclerView{
void onClickPosition(int pos);
}
}
Mein Fragment
public class SellerListFragment extends Fragment implements AdapterRecyclerView.OnClickAdapterRecyclerView {
public static final String SELLER="SELLER";
@BindView(R.id.recyclerViewSeller)
protected RecyclerView recyclerView;
private ArrayList<Seller>sellers;
private AdapterRecyclerView adapterSeller;
private OnSelectedSellerListener listener;
public SellerListFragment() {
}
public static SellerListFragment newInstance() {
SellerListFragment fragment = new SellerListFragment();
Bundle bundle = new Bundle();
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sellers = new ArrayList<>();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_seller_list, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapterSeller = new AdapterRecyclerView(sellers,SellerListFragment.this,SELLER);
recyclerView.setAdapter(adapterSeller);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
}
@Override
public void onClickPosition(int pos) {
//Never called does not work
listener.onSelectedSellerListener(pos,sellers);
}
public interface OnSelectedSellerListener {
void onSelectedSellerListener(int position, ArrayList<Seller> seller);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity activity;
if (context instanceof Activity) {
activity = (Activity) context;
try {
listener = (OnSelectedSellerListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + "implement OnSelectedSellerListener");
}
}
}
}