我要实现一个动态布局,需要联网获取数据之后确定布局的数量
但是在fragment初始化的时候,没有数据的话就创建holder,这样子holder为空了,不知道要如何重新创建holder或者是让holder在获取到数据后再创建。
请问要如何实现?
public HourlyViewHolder(View itemView, Context context,List<WeatherData> list) {
super(itemView);
this.weatherDataList = list;
hourlyLinearLayout = (LinearLayout) itemView.findViewById(R.id.card_hourly_Linear);
//循环绘制hourlyList
if (list.size() != 0) {
for (int i = 0; i < list.get(0).getHourly_forecast().size(); i++) {
View view = View.inflate(context, R.layout.hourly_item, null);
hourlyTimeText.add((TextView) view.findViewById(R.id.tv_hourly_time));
hourlyTempText.add((TextView) view.findViewById(R.id.tv_hourly_temp));
hourlyWetText.add((TextView) view.findViewById(R.id.tv_hourly_wet));
hourlyWindText.add((TextView) view.findViewById(R.id.tv_hourly_wind));
hourlyLinearLayout.addView(view);
}
}
}
무엇을 설명하시는지 모르겠습니다. 레이아웃이 여러 개인 경우 getItemViewType(int position) 메서드를 사용하여 다른 유형을 반환할 수 있습니다. onCreateViewHolder(ViewGroup parent, int viewType)를 사용하면 다른 viewType을 추가할 수 있습니다. 하나의 레이아웃에 동적 레이아웃이 있는 경우 코드를 사용하여 이를 동적으로 제어할 수 있습니다(사용자 정의 컨트롤을 작성하여 ViewHolde에 전달하는 것이 좋습니다)
중첩된 recyclerView는 권장되지 않지만 매우 편리합니다
설명을 이해하지 못했습니다
RecyclerView인 경우 listView와 동일합니다. getCount() 메서드가 어댑터에서 먼저 실행됩니다. getCount()가 0을 반환하면 후속 메서드가 실행됩니다. 실행되지 않으므로 말씀하신 것처럼 데이터 없이 홀더를 생성하는 상황은 발생하지 않을 것입니다
잘 모르겠나요? .
내 recycleview에 4개의 레이아웃이 있는데 그 중 하나에 데이터 양이 불확실하므로 ViewHolder를 생성할 때 이 레이아웃의 getCount가 0입니다. 따라서 현재 이 레이아웃의 뷰홀더는 존재하지 않습니다
적시에 어댑터를 설정하거나 데이터 변경을 알리는 것만으로도 충분하지 않나요?