내 배열 목록에있는 항목에 따라 두 가지 항목 뷰를 표시하려고합니다. 조건없이 (if) 아무런 문제가 없지만 조건을 넣을 때 2 개의 viewHolders를 처리해야하므로 viewHolder가 viewHolder로 캐스팅 될 수 없다는 오류가 발생합니다.viewHolder를 viewHolder에서 캐스팅 할 수 없습니다.
@Override
public View getView(int position, View view, ViewGroup parent) {
bind(getItem(position), view);
return view;
}
private void bind(final Eddystone eddystone, final View view) {
List<Content> contents = ... ;
if(contents.get(i).content_type_id==2){
ViewHolder holder = (ViewHolder) view.getTag();
// some code here
}
else {
ViewHolderVideo holder = (ViewHolderVideo) view.getTag();
// some code here
}
}
오류가 (다른 조건에서) 두 번째 홀더에 :
여기 내 코드입니다.
조건을 제거하면 (else) 완벽하게 작동하며이 코드가 작성된 클래스는 어댑터입니다.
어떤 도움을 주셔서 감사합니다.
감사합니다 :)
감사 :
당신은 다시
getView()
의 내부보기 유형을 확인할 수 있습니다 : 당신이 게시 한 내용, 당신의 구현은 아마도 다음과 같을 것입니다 감안할 이해하지만, 내 코드의 문제는 내용 목록이 CallBack()에서 시작되므로 contents.get (i)가있는 getItemVIewType에서 null 참조 예외가 발생합니다. 목차 목록은 콜백의 onSuccess 메소드 내부의 buildVideoRow에서 시작됩니다./이것을 해결하는 방법은 있습니까? –
@AymaneBo 목록에 표시하기 전에 데이터를 먼저로드하거나 행 유형을 결정하고 나머지를 나중에로드 할 수있는 부분을로드하십시오. 목록 작성자는 목록을로드 할 책임이 없습니다. ListView를 새로 고치려면 필요하다면'notifyDataSetChanged()'를 호출하여 Activity 나 Fragment에서 그것을 수행 한 다음로드 된 목록을 어댑터로 전달하십시오. – Karakuri