Je veux faire quelque chose comme Spotify Home View avec modernité, mais je ne peux pas comprendre comment le faire. S'il vous plaît aidez-le je suis très confus. S'il vous plaît aidez-le, ce sont mon code XML ressemblent à ceux-ci. Premièrement est la principale mise en page RECYCLERVIEW, la deuxième mise en page est RECYCLERVIEW Liste de Rowitem et une autre est la liste des lignes de centre-ci. Je veux obtenir quelque chose comme ceux-ci comment obtenir une sortie réelle comme Spotify. Je veux montrer ceux-ci mais ils me donnent les mêmes données, mais j'ai des données différentes avec différentes arraches. Ensuite, comment montrer différentes données.
recyclerview.xml p>
Log.d("getSingleCat", "" + catId);
productsModels = new ArrayList<>();
RetrofitInterface anInterface = RetrfitClient.getRetrofitClient().create(RetrofitInterface.class);
Call<ProductInCategoryResponse> inCategoryResponseCall = anInterface.IN_CATEGORY_RESPONSE_CALL(catId, 1);
inCategoryResponseCall.enqueue(new Callback<ProductInCategoryResponse>() {
@Override
public void onResponse(Call<ProductInCategoryResponse> call, Response<ProductInCategoryResponse> response) {
productsModels = response.body().getRows();
Log.d("productCat", "" + productsModels.size());
data.setCategoryName(catName);
data.setProductsModels(productsModels);
dataArrayList = new ArrayList<>();
HashMap<String,ArrayList<ProductsModel>> listHashMap = new HashMap<String, ArrayList<ProductsModel>>();
for (int j=0;j<categoryModels.size();j++){
dataArrayList.add(data);
listHashMap.put(categoryModels.get(j).getName(), productsModels);
Log.d("ListMap",""+listHashMap.put(categoryModels.get(j).getName(),productsModels));
}
Log.d("CatName",""+catName);
/*Gson gson = new Gson();
String pList = gson.toJson(productsModels);*/
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
mainRecyclerView.setLayoutManager(manager);
InCategoryProductAdapter inCategoryProductAdapter = new InCategoryProductAdapter(getActivity(), dataArrayList);
mainRecyclerView.setAdapter(inCategoryProductAdapter);
/*
Log.d("DataArray", "" + dataArrayList.size());
Log.d("GetCat", "" + data.getCategoryName());*/
// Log.d("DataList",""+dataArrayList.get(i).getCategoryName() + " :"+ dataArrayList.get(i).getProductsModels());
}
@Override
public void onFailure(Call<ProductInCategoryResponse> call, Throwable t) {
Toast.makeText(getActivity(), t.toString(), Toast.LENGTH_SHORT).show();
}
});
4 Réponses :
Snaphelper est un Classe d'assistance qui aide à claquer toute la vue enfant de la recyclerview. Par exemple, vous pouvez enregistrer le FirstVisibleItem de l'application RecyclerVoir, vous devez avoir vu dans l'application Play Store que le FirstVisibleItem sera toujours complètement visible lorsque le défilement se situe à la position de ralenti. p>
https://blog.mindorks.com/utrant -snaphelper-in-recyclerview-fc616b6833e8 p> maintenant, attachez-le à votre RecyclerVoir. p> SnapHelper startSnapHelper = new StartSnapHelper();
startSnapHelper.attachToRecyclerView(yourRecyclerView);
Je dois vérifier la morue de Github, non exactement exactement que je veux aimer ceci.Je veux la vue principale de recycleur à l'intérieur d'une autre vue de texte et de la vue Recycler
@Axar Cela signifie que vous devez mettre en place plusieurs types, non?
Oui Définir plusieurs types s'il vous plaît vérifier mon xml
Ensuite, vous devez différencier la méthode GetItemViewTtype de RecyclerView.adapter
Vous pouvez créer un fragment contenant un en-tête et un recyclerview horizontal et chaque fois que vous obtenez la réponse du serveur Ajoutez ce fragment dans le comte de votre liste. Somthing comme ce code:
for (ViewModel items : model.getViewList()) {
TextView textView = new TextView(activity);
textView.setText(items.getTitle());
textView.setPadding(UnitUtil.dpToPx(16), UnitUtil.dpToPx(4), UnitUtil.dpToPx(16), UnitUtil.dpToPx(4));
RecyclerView recyclerView = new RecyclerView(activity);
recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, true));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new ContentAdapter(items.getContentList(), (anEnum, position, item, viewId) -> startActivity(new ContentFactory().getActivity(ActivityType.fromId(((ContentSimilarModel) item).getType())
, activity, item)), false));
recyclerView.addItemDecoration(new ContentDecoration());
binding.homeViewLy.addView(textView);
binding.homeViewLy.addView(recyclerView);
}
Utilisez la vue Recycler imbriquée et lisez ceci, il vous indiquera comment implémenter cette p>
xxx pré> blockQuote>
mais cela ne fonctionne pas sur deux ou trois listes indépendantes de type multiple, il ne contient qu'un seul type de liste.
Je fais quelque chose de similaire dans une application pour le moment, mais il fait tôt et la façon dont je tente cela, c'est en utilisant un linearlayout enveloppé avec une vue de défilement, dans la vue de ma recycleur. J'ajoute de manière programmée à la liste et jusqu'à présent, cela fonctionne vraiment bien pour le défilement vertical. Il y a une vue horizontale de défilement disponible que je suis encore à essayer mais qui devrait fonctionner de même. P>
Vous pouvez utiliser RECYCLERVIEW Voir la piscine facilement peut créer un sous-objet ... s'il vous plaît visitez le code Github.com/alghifari/recycledviewpoolexample
Prenez le parent
recyclerview code> dans votre mise en page, puis dans Disposition d'élément B> Prenez un autre enfantrecyclerview code>.Je dois faire une configuration principale de recyclerview et une autre avec une vue de texte et la mise en page de la vue de recyclage, faites une classe d'adaptateur, mais j'ai deux API différentes comment nous rejoindre.
Vous pouvez envelopper la liste de votre enfant de l'adaptateur enfant dans la liste des parents. I.e. La classe de modèle de votre liste parent ne contient qu'une seule chaîne pour lier le titre, puis prenez un objet de liste de réseau de votre type de classe de modèle enfant, puis transmettez-le à votre adaptateur enfant par position. I>