我想使用RecyclerView創建項目列表,並希望在點擊時展開特定項目(如在電話列表中)。我想在不使用任何庫的情況下實現這一目標。誰能幫忙?如何使recyclerview可擴展而不使用第三方庫
1
A
回答
1
獲取子數據列表作爲數據集中父數據的成員。 而且,在RecyclerView行的單擊事件,在這裏使用他們這樣的.. mdataSet
是RecyclerView
final TitleHolder holder = (TitleHolder) h;
final Model model = (Model) mdataSet.get(position);
holder.txt_title.setText(model.getTitle());
holder.childItem = model;
holder.txt_title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (model.getChildList() == null) {
//collapse
((Model) mdataSet.get(mdataSet.indexOf(holder.childItem))).isExpanded = false;
holder.arrow.startAnimation(AnimationUtils.loadAnimation(context, R.anim.arrow_reverse));
model.childList = new ArrayList<ModelData>();
int count = 0;
int pos = mdataSet.indexOf(holder.childItem);
while (mdataSet.size() > pos + 1 && mdataSet.get(pos + 1).type == Model.VIEW_CHILD) {
model.childList.add((ModelData) mdataSet.remove(pos + 1));
count++;
}
notifyItemRangeRemoved(pos + 1, count);
} else {
//expand
((Model) mdataSet.get(mdataSet.indexOf(holder.childItem))).isExpanded = true;
holder.arrow.startAnimation(AnimationUtils.loadAnimation(context, R.anim.arrow));
int pos = mdataSet.indexOf(holder.childItem);
int index = pos + 1;
for (ModelData i : model.getChildList()) {
mdataSet.add(index, i);
index++;
}
notifyItemRangeInserted(pos + 1, index - pos - 1);
model.childList = null;
}
}
});
if (((Model) mdataSet.get(mdataSet.indexOf(holder.childItem))).isExpanded) {
holder.arrow.startAnimation(AnimationUtils.loadAnimation(context, R.anim.arrow));
}
這裏主要的數據集,我的孩子在數據click事件上txt_title
添加到主數據集再次,使用Title(parent)
和data(child)
作爲兩個不同的ViewTypes這樣
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == VIEW_TITLE) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_expand_title, parent, false);
return new TitleHolder(itemView);
} else {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_wallet_history, parent, false);
return new DataHolder(itemView);
}
}
OR
如果你的孩子的看法是修復(要展開/摺疊),然後將它們包裝內部佈局,並作出這樣的佈局可見/以達到擴大崩塌效應 參考,this link使動畫走了他們的動畫
+0
是的。這是實現這一目標的另一種方式。感謝@AbhishekSingh合併我的答案。我刪除了我的其他帖子 –
+0
這將有助於其他人搜索同一問題 –
相關問題
- 1. 如何在android中使用第三方庫而不使用第三方庫
- 2. 擴展Codeigniter第三方庫
- 3. 使用TYPO3擴展生成器打開第三方擴展
- 4. 在WebWorks Javascript擴展中使用第三方庫?
- 5. 使第三方庫的擴展方法變得過時
- 6. 將第三方類擴展爲Hadoop可使用代理書寫
- 7. 在Recyclerview中加載多個Url圖像而不使用第三方庫
- 8. 可以plv8 JavaScript語言擴展調用第三方庫?
- 9. 擴展Java第三方API
- 10. 使用RecyclerView的可擴展列表?
- 11. 如何使用與Spark不可序列化的第三方庫
- 12. Java:如何使用第三方庫?
- 13. 如何使第三方magento擴展兼容商店主題。
- 14. 可以使第三方dll使用log4Net 1.2.11,而不是1.2.10
- 15. 使用第三方庫
- 16. 使用的,而不是擴展方法
- 17. 安裝Firefox擴展使用第三方的安裝
- 18. 使用try/catch擴展第三方函數
- 19. 如何在反應應用程序中使用第三方擴展?
- 20. 如何創建可擴展的視圖,而不使用android中的任何庫
- 21. 如何使用Boost線程使第三方庫可以線程安全使用?
- 22. 擴展第三方Angular控制器
- 23. 擴展第三方飛鏢組件
- 24. 如何查找第三方庫中使用的第三方組件
- 25. 如何使用GWT中使用「文檔」的第三方庫
- 26. 我可以在使用第三方庫時使用IOC
- 27. 可擴展的TextView for RecyclerView
- 28. 使數據庫可擴展
- 29. 如何在現有的第三方擴展中重寫/擴展Magento類
- 30. 如果第三方庫不可公開下載,那麼如何將第三方庫放入本地存儲庫?
與我的圖書館,你不能這樣做,因爲Android確實提供可擴展的回收站視圖..這裏是可擴展的回收站視圖的好教程https://www.bignerdranch.com/blog/expand-a-recyclerview-in-four-steps/ –
@AbhishekSingh你可以做到這一點,沒有外部圖書館。看到我的回答 –
@MilindMevada謝謝,我會嘗試。 –