본문 바로가기
  • fishing...
  • eating...
MISCELLANEOUSNESS

Customized ListView

by 회색뿔 2011. 2. 28.


HashMap에 저장되어 있는 내용들을 ListView로 보이려는 작업을 수행하려하는데..


일단 그냥 기본적인 ArrayAdapter나 SimpleListAdapter를 이용하기 보다 전달하고자 하는 컬랙션 데이터 타입도 다르고 ListView에 표시되는 Layout도 바꿀 예정이라 테스트 할겸 리뷰 및 공부를 수행했다.

일단 인터넷에서 검색해서 볼수 있는 자료들의 내용 대부분이 ArrayList를 이용해서 HashMap의 있는 데이터를 ArrayList로 다시 저장하여 사용하는 내용들이었다.

그래서 여기 저기 내용들을 짜집기 해봤는데.. 뭐 다른 곳에서 얘기하는 것들과 그렇게 다르지 않은 코드를 만들게되었다.

다만 그들과 다른것 한가지는 소스가 쵸끔 더 깔끔해 보인다는 정도?!



소스 파일
package com.test.Adapter;

import java.util.ArrayList;
import java.util.HashMap;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class HashAdapter extends Activity {
    /** Called when the activity is first created. */
	
	HashMap  map = new HashMap();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        map.put(1, "Kim");
        map.put(2, "Jang");
        map.put(3, "Lee");
        map.put(4, "Park");
        map.put(5, "Min");
        
        ListView roomListView = (ListView)findViewById(R.id.listView1);
        roomListView.setAdapter(new HashListAdapter(this, map));
    }
    
    public class HashListAdapter extends BaseAdapter {
    	
    	HashMap map;
    	ArrayList ar;
    	
    	TextView txt_Names;
    	Context context;
    	
    	public HashListAdapter(Context context, HashMap map) {
 
    		this.context = context;
    		this.map = map;
    		this.ar = new ArrayList(map.keySet());
    	}
    	
		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return this.map.size();
		}

		@Override
		public String getItem(int arg0) {
			// TODO Auto-generated method stub
			return this.map.get(ar.get(arg0));
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub

			View v = convertView;
			
			if(v == null) {
				LayoutInflater vi = getLayoutInflater();
				v = vi.inflate(R.layout.inflatorlist, null);
			}
			
			txt_Names = (TextView) v.findViewById(R.id.Names);
			if(txt_Names != null)
				txt_Names.setText(getItem(position));
			
			return v;
		}
    	
    }
}
main.xml

	

inflatorlist.xml