2012-04-26 4 views
0

나는 안드로이드 개발에 초보자입니다. 나는 내 학교 프로젝트를 위해이 앱을 개발 중이다. 응용 프로그램은 기본적으로 가전 제품의 에너지 소비 비용을 계산하는 계산기입니다. 내 화면에는 viewFlipper에 가전 제품의 이미지 뷰가 들어있어 사용자가 이미지를 탐색하여 계산하려는 기기를 선택합니다. 제 질문은 정수 값 (어플라이언스의 와트 또는 스펙과 같은)을 이러한 imageView에 효율적으로 할당하여 앱이 선택한 이미지를 기반으로 에너지 소비를 계산할 수 있도록하는 것입니다. 임 조건부 문장을 사용하지만 그것은 너무 많은 코딩 것 같습니다 그리고 그것은 40 개 이상의 이미지보기가 있기 때문에 그것은 메모리를 낭비합니다. SQL 데이터베이스를 사용하고 모든 사양과 어플라이언스 그림을 테이블에 넣고 사용자가 선택하거나 배열이나 목록과 같은 XML을 만들 수있는 방법이 있습니까?ImageView에 값 지정하기

답변

2

ImageView를 확장하는 클래스를 만드는 것이 좋습니다. 그런 다음 객체를 사용자 정의 클래스에 전달할 수 있습니다 (예 : 모든 에너지 관련 데이터를 저장하는 객체)를 사용자 정의 ImageView 클래스의 생성자에 전달합니다. 예 :

// The CustomView "IS-A" ImageView, so you can perform ImageView operations 
// on your custom object. You can even choose to override ImageView methods. 
public class CustomView extends ImageView { 
    Object myObj; 

    public CustomView(Context context, Object myObj) { 
     super(context); 
     this.myObj = myObj; 
    } 
} 

또는 ImageView에서 태그를 설정할 수 있습니다.

ImageView를 40 개 사용 하시겠습니까? 메모리 관리가 제대로 처리되지 않으면 OutOfMemoryError 문제를 해결하십시오. 조심해!

+0

도움을 주셔서 감사합니다! – fozkul

2

당신은 조회수

아이 뷰에 대한 참조를 저장하는 ViewGroups에 사용되는 ViewHolder 패턴과 유사하다
Double energy = Double.valueOf(123.44); 
imageView.setTag(energy); 
... 
Double energy = (Double) imageView.getTag(); 

에 자신의 목적을 위해 객체를 할당 할 수 있습니다.

+0

실제로 게시 한 것은 ViewHolder 패턴이 아닙니다. ViewHolder의 요점은 TextViews 및 ImageViews와 같은 뷰에 대한 참조를 저장하여 해당 뷰에 바인딩 할 때마다 findViewById (..)를 수행하지 않아도된다는 것입니다. 그러므로 "VIEW"홀더. – dymmeh

+0

게시 한 내용은 질문에 대답하는 올바른 방법 중 하나입니다. 해당 시청자가 아닙니다.) – dymmeh

+0

그래, 시청자 본 패턴이 아니지만 나에게 상기시켜주었습니다. – zapl

관련 문제