마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Listview 에서 item 별로 배경색을 달리주고싶은데요

0 추천

리스트뷰를 커스텀으로 따로 제작해서

 

 

        tri=new ReplyItem("테스트 입니다", false);ri.add(tri);
        tri=new ReplyItem("테스트 입니다", true);ri.add(tri);
        tri=new ReplyItem("테스트 입니다", false);ri.add(tri);
 
위와같이 추가해서 두번째 인자가 true로 들어오는 아이템만 배경색을 회색으로 주고싶은데 어떤식으로 해줘야할까요?
 
디버그 (160 포인트) 님이 2013년 4월 1일 질문

2개의 답변

0 추천
customAdapter 클래스의 getView() 메서드 안에서 해당하는 position 의 데이터를 불러와서 값을 체크하시면 됩니다.

물론 색 변경하는 view 는 getView 인자로 넘어오는 View에 setBackgroundColor() 메서드 사용하시면 됩니다.

참고적으로 listview 의 특성상 view를 재활용해서 사용하기 때문에, true 뿐만 아니라 반드시 false 일때도 색상을 지정해주셔야 합니다.
Frog (3,910 포인트) 님이 2013년 4월 1일 답변
0 추천

아답터쪽 소스가 첨부되지 않아서 많이들쓰시는걸로 설명하겠습니다.

보통 많이들 쓰시는 커스텀 아답터 소스가 이렇습니다.

private class CustomAdapter extends ArrayAdapter<Object> {
	private ArrayList<ReplyItem> item;
	private ReplyItem temp;

	public CustomAdapter (Context ctx, int resourceID, ArrayList item) {
		super(ctx, resourceID, item);
		this.item = item;

	}

	public View getView(final int position, View convertView, ViewGroup parent) {

		View v = convertView;
		if (v == null) {
			LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			v = vi.inflate(R.layout.[레이아웃xml명], null);
		}

		temp = item.get(position);

		if (temp != null) {
                       //List Item control
		}

		return v;
	}
}

 

여기서 //List Item control 부분에서 

if(temp.[boolean변수명] == true){

     v.setBackgroundColor(Color.GRAY);

}

를 추가해주시면 됩니다.

 

얼룩돼지 (15,720 포인트) 님이 2013년 4월 1일 답변
...