리모트 이미지가 나왔다 안나왔다 합니다.

리스트뷰 안에서 원격 웹서버에 있는 이미지를 뿌려주는데요
이미지가 나왔다 안나왔다 합니다.
혹시 로딩이 느려서 그런가 싶어 1분이상 기다려봐도 소식이 없어요.
초록색 부분은 defaultImage로 지정된 1픽셀 이미지 입니다.
리스트뷰가 문제가 있나 싶어 일반 뷰 안에 집어넣어봐도 동일한 증상이 발생합니다.
서버에서 로그를 보면 아예 이미지 url 호출을 안하는데요.
불특정하게 증상이 나와서 감을 잡을수가 없어요.
혹시 이런 경우 없으신지요?

Ti SDK : 3.5.0 GA, 4.0 GA, 5.0 GA 모두 동일한 증상

Controller

PostMediaCollection.on('fetch', function(col) {
		
	
	var items = [];
	
	PostMediaCollection.each(function(model){
		
		
		items.push({
			
			image : {
				type : model.get('CONTENT_TYPE_FG'),				
				image : model.get('CONTENT_TYPE_FG') == 'IMAGE' ? Alloy.CFG.image_url +  model.get('CONTENTS') + '?quality=50&width=640&mode=resize' : '/images/bg/green_dot.jpg',
				width : deviceWidth,
				height : heightImg
								
			},
			title : {
				type : model.get('CONTENT_TYPE_FG'),				
				text :  model.get('CONTENTS')
								
			},
			contents : {
				type : model.get('CONTENT_TYPE_FG'),				
				text :  model.get('CONTENTS')
								
			},
			
			template : 'TEMP_' + model.get('CONTENT_TYPE_FG'),
				
			properties : {
				itemId : model.id,
				backgroundColor : 'white',
				height : Ti.UI.SIZE,				
				selectionStyle : (OS_IOS) ? Ti.UI.iPhone.ListViewCellSelectionStyle.NONE : null
				
			} 
			
		});
		
		

	});
	
	
	$.listSection.setItems(items, { animationStyle : (OS_IOS) ? Ti.UI.iPhone.RowAnimationStyle.NONE : null });
	
	
});

View

<ListView id="listView" defaultItemTemplate="TEMP_TEXT" zIndex="1000" height="Ti.UI.SIZE" top="0">
	
	           

    <Templates>

        <ItemTemplate name="TEMP_TEXT" >
            <View height="Ti.UI.SIZE">
          	 	<Label bindId="contents" class="contents" />		                  	 
            </View>
        </ItemTemplate>

			<ItemTemplate name="TEMP_IMAGE" >
				<View height="Ti.UI.SIZE">
          	  <ImageView bindId="image" class="photo" />
            </View>                   
        </ItemTemplate>
       
    </Templates>

    <ListSection id="listSection"></ListSection>
    
    	
</ListView>

이미지 호출 못할때…

이미지 호출할때…

json structure를 확인하면 도움이 될 것 같은데요.
model.get(‘CONTENT_TYPE_FG’),
model.id,
그리고 model.get(‘CONTENTS’) 는 항상 존재하나요?
예를들어 그 중 한 element의 field가 없거나 url path가 다른 경우가 있을수 있습니다.

또한 fetch 했을 때 데이터를 제대로 받아와서 디스플레이하는지 확인해봐야 할 것 같네요.

1개의 좋아요

제가 생가해도 타이타늄 쪽 문제보다는 서버쪽 문제일 것같아요.

3.5부터 전부 동일한 증상이라 하셨으니 서버쪽 원인이지 않을까 더욱 확신하게되네요.^^

서버쪽에서 이미지를 제대로 못넘겨주거나 데이터가 계속 똑같이 안넘어오거나 할 것 같다는 생각이 듭니다. charles 같은 proxy를 이용해서 서버와 주고 받는 것들(json 및 이미지)을 직접 열어보세요.

해결했습니다. ㅠㅠ
서버 문제는 아니었구요.
Scrollview 안에 ListView 쓸때 이런 현상이 생깁니다.
아마도 스크롤뷰와 리스트뷰의 스크롤 이벤트에서 충돌이 생기는것 같은데요.
리스트뷰를 감싸고 있던 스크롤뷰를 없애니까 잘 나옵니다. ㅠㅠ

listview를 scrollview안에 넣으면 안된다고 문서인가 Q&A인가에 있더라구요.
저도 listview의 scrollevent때문에 그렇게 해봤는데요. 성능문제도 있고, 스크롤이 중복되서 ux가 이상하죠.

아 그렇군요. 감사합니다 ^^

타이타늄 리스트뷰가 좋은 점이 나름 성능 최적화를 위한 로직들이 내부적으로 구현되어 있습니다.

대표적인 예가 화면에 보여야만 이미지를 불러오고 이미지뷰는 내부적인 캐쉬를 해서 불러오는 속도를 향상하는것 입니다.그래서 아마도 재경님 같은 증상이 내부적으로 처리하는 스크롤 관련 event에서 꼬이는 걸 겁니다.^^

그런데 어떤 이유에서 scrollview 안에 listview를 넣은 건가요?

어떤 액션이 일어나고 최하단으로 스크롤하기위해 썼었는데 리스트뷰에도 그런 기능이 있더라구요.
그래서 변경하였습니다 ^^