2
我正在致力於電子商務應用程序。在這裏,我正在致力於產品過濾。 這裏的過濾器是動態的,這意味着一旦過濾器頁面將顯示品牌和價格,然後下一次它可以顯示品牌,價格,風格..等等。 過濾產品可能有很多情況。動態創建RecyclerView UI - Android
應用程序正在從Webservice動態接收過濾器。 所以我在這裏使用從web服務接收的數據動態創建過濾器。爲此,我使用RecyclerView來顯示動態過濾器 。
這裏是RecyclerView的代碼,我正在動態地創建過濾器。
onCreateViewHolder():現在
@Override
public FilterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LinearLayout topLayout = new LinearLayout(mContext);
topLayout.setOrientation(LinearLayout.VERTICAL);
if (filterItems != null) {
for (int filterItemsCount = 0; filterItemsCount < filterItems.size(); filterItemsCount++) {
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 10);
AFileterItem filterItem = filterItems.get(filterItemsCount);
TextView textView = new TextView(mContext);
textView.setText(filterItem.getFiletrLabel());
ll.addView(textView);
for (int i = 0; i < filterItem.getList().size(); i++) {
VlauesItem item1 = filterItem.getList().get(i);
CheckBox cb = new CheckBox(mContext);
cb.setId(i);
cb.setText(item1.getValueItemLabel());
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(mContext, String.valueOf(isChecked), Toast.LENGTH_SHORT).show();
}
});
ll.addView(cb);
}
topLayout.addView(ll);
}
}else{
topLayout.addView(null);
}
FilterViewHolder viewHolder = new FilterViewHolder(topLayout);
return viewHolder;
}
,問題是:
當我創建過濾器,然後動態地創建RecyclerView相同的過濾器一次以上。 我想知道如何管理上面的代碼,以便我可以消除此問題。
ViewHolder的具體類型具有單一佈局:我有一個頂部的單一佈局,即LinearLayout。 –
如果可以考慮創建不同的視圖類型:我不需要在這裏創建不同的-2 ViewHolders,因爲我有一個頂層佈局 –
或一個具有預定義佈局:我不能預定義佈局,因爲它不是要求。 –