Ich habe ein zwei Fragment auf MainActivity.Warum dieser Fehler passiert ist, der gleiche Code, aber verschiedene Fragmente, Recyclerview, Retrofit2
Zuerst YellowFragment
public class YellowFragment extends Fragment implements FlowerAdapter.FlowerClickListener{
private SwipeRefreshLayout swipeContainer_yellow;
private RecyclerView mRecyclerView;
private RestManager mRestManager;
private FlowerAdapter mFlowerAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_yellow, container, false);
swipeContainer_yellow = (SwipeRefreshLayout) view.findViewById(R.id.swipeContainer_yellow);
swipeContainer_yellow.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRestManager = new RestManager();
Call<List<Flower>> listCall = mRestManager.getmFlowerApiService(getActivity()).getAllFlowers();
listCall.enqueue(new Callback<List<Flower>>() {
@Override
public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) {
if (response.isSuccessful()) {
mFlowerAdapter.clear();
List<Flower> flowerList = response.body();
for(int i =0; i<flowerList.size(); i++) {
Flower flower = flowerList.get(i);
mFlowerAdapter.addFlower(flower);
}
swipeContainer_yellow.setRefreshing(false);
}
}
@Override
public void onFailure(Call<List<Flower>> call, Throwable t) {
}
});
}
});
configViews(view);
return view;
}
private void configViews(View view) {
mRecyclerView = (RecyclerView) view.findViewById(R.id.rv_flower_yellow);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext(), LinearLayoutManager.VERTICAL, false));
mFlowerAdapter = new FlowerAdapter(this);
mRecyclerView.setAdapter(mFlowerAdapter);
}
}
Zweitens RedFragment (es ist alles das Gleiche mit YellowFragment, aber swipeContainer_yellow, rv_flower_yellow
, LinearLayoutManager
geändert swipeContainer_red, rv_flower_red
, GridLayoutManager
)
public class RedFragment extends Fragment {
private SwipeRefreshLayout swipeContainer_red;
private RecyclerView mRecyclerView;
private RestManager mRestManager;
private FlowerAdapter mFlowerAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_red, null);
swipeContainer_red = (SwipeRefreshLayout) view.findViewById(R.id.swipeContainer_red);
swipeContainer_red.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
mRestManager = new RestManager();
Call<List<Flower>> listCall = mRestManager.getmFlowerApiService(getActivity()).getAllFlowers();
listCall.enqueue(new Callback<List<Flower>>() {
@Override
public void onResponse(Call<List<Flower>> call, Response<List<Flower>> response) {
if (response.isSuccessful()) {
mFlowerAdapter.clear();
List<Flower> flowerList = response.body();
for(int i =0; i<flowerList.size(); i++) {
Flower flower = flowerList.get(i);
mFlowerAdapter.addFlower(flower);
}
swipeContainer_red.setRefreshing(false);
}
}
@Override
public void onFailure(Call<List<Flower>> call, Throwable t) {
}
});
}
});
configViews(view);
return view;
}
private void configViews(View view) {
mRecyclerView = (RecyclerView) view.findViewById(R.id.rv_flower_red);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity().getApplicationContext(), 3));
mFlowerAdapter = new FlowerAdapter(this); #Here is problem
mRecyclerView.setAdapter(mFlowerAdapter);
}
}
Aber in RedFragment ,
Warum ist das passiert?
Ein Teil von FlowerAdpater
public class FlowerAdapter extends RecyclerView.Adapter<FlowerAdapter.Holder> {
public FlowerAdapter(FlowerClickListener listener) {
mFlowers = new ArrayList<>();
mListener = listener;
}
public interface FlowerClickListener {
void onClick(int position);
}
}
Ich versuchte zunächst zwei Fragmente mit den gleichen Daten zu machen (die von meinem RESTapi Server mit retrofit2 ist gekommen) nur auf andere Sicht (Gridlayout und Linearlayout).
Aber ich gab es auf. Weil es mir zu schwer schien.
Wenn es eine gute Möglichkeit gibt, von meinem ersten Versuch abhängig zu sein, wäre ich sehr dankbar.
Wie auch immer, warum ist dieser Fehler passiert?
Bitte lassen Sie mich wissen Hinweis.
Vielen Dank U Rahul Sharma –