2013-04-10 4 views
4

각 항목의보기가 문자열 (항목의 이름) 인 ListView가 있습니다. 하지만 가격, 크기, 무게, 세금 등 다른 많은 데이터를 해당 항목과 연결해야합니다. 따라서 Item이라는 새 Java 클래스를 만든 다음 목록의 각 항목에 대한 개체를 만듭니다.Listview의 복잡한 항목

저는 이것을 구현할 수있는 방법이 무엇인지 모르겠습니다. 두 가지 확실한 선택이 있습니다 :

1) 단순히 Android보기 외부에서 데이터 구조를 만든 다음이 데이터 구조의 각 항목 이름을 가져 와서 ListView에 넣는 UpdateList()라는 메소드를 작성하면됩니다. . 이 문제는 일부 데이터가 두 번 (원래 데이터 구조 및 ListView 용 어댑터) 복제되고 데이터를 복제 할 때 버그 잠재 성이 발생한다는 것입니다.

2) 또는 어떻게 든 데이터 구조를 ListView의 어댑터와 직접 연결할 수 있으며 표시되는 각 ListView 항목의 이름을 표시하는 방법을 파악할 수 있습니다. 여기서 장점은 단일 데이터 구조 만 가질 수 있다는 것입니다. 그러나 이것이 안드로이드에서 가능한지 또는 매우 복잡한 지 나는 모른다.

Android 앱에서 이렇게하는 것이 가장 좋은 방법은 무엇입니까?

답변

1

그냥 어댑터를 사용하십시오. 훨씬 깨끗합니다. 그런 다음 getView()를 사용하여 목록 항목을 표시 할 때 필요한 정보를 검색 할 수 있습니다. this example을 참조하십시오.

+0

나는 당신의 예는 일을 가져올 수 없습니다. 난 정확히 복사하고 14 컴파일러 오류를 받았습니다. 첫번째는 : AlertsAdapter.java:9 : package josecgomez.com.android.dev.webservice.objects가 존재하지 않습니다. [javac] import josecgomez.com.android.dev.webservice.objects.alerts; 제공된 단계는 –

9

ListView 및 어댑터 옵션을 사용하는 것이 더 좋을 수 있습니다. 원하는대로이 ListView을 채우려면 사용자 지정 ArrayAdapter을 만들어야합니다.

이 기술의 장점은 더 적은 메모리를 소비하기 위해 ViewsListView 안에 재활용하는 뷰 재활용 메커니즘을 얻는 것입니다.

1은 하나의 행에 대한 데이터를 나타내는 개체를 만듭니다

는 짧은에서 당신은해야 할 것입니다.

2. 이러한 개체의 ArrayList을 만듭니다.

3. ListView가 포함 된 레이아웃을 만들거나 코드를 사용하여 ListView를 기본 레이아웃에 추가하십시오.

4. 단일 행의 레이아웃을 만듭니다.

Views의 입장에서 데이터 행의 시각적 특성을 나타내는 ViewHolder을 만듭니다.

6. 필요에 따라 행을 채우는 사용자 정의 ArrayAdapter을 작성하십시오.

마지막으로 ArrayAdapterListViewonCreate으로 지정하십시오.

당신은 내가 쓴이 블로그 게시물을 읽고이를 구현하는 방법에 대한 아이디어를 얻을 수 있습니다 :

Create a Custom ArrayAdapter

+0

+1입니다. yup 사용자 지정 어댑터가이를 수행하는 방법입니다. – Raghunandan

+0

감사합니다. 나는 이것을 구현하려고 노력할 것이다. –