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

ArrayAdapter를 이용한 ListView 뿌리기.

0 추천

안녕하세요 초보개발자 입니다.

아래와 같은리스트 뷰를 뿌리는 중 입니다.

------------------- 리스트 -------------------------------------------------------

(이미지) 이름                         (전화버튼) (문자버튼) (귓속말 버튼)

 

4의 배수 이면 귓속말 버튼만 보여주고

아니면 전화버튼과 문자버튼만 보여주려 합니다.

 

public class TalkerInfo {
public String name;
public String whisperButton;
public Drawable callButton;
public Drawable messageButton;
public Drawable image;
 
이런 인포클래스가 하나 있구요
경우에 따라 다른 버튼을 보여주기 위해서
생성자를 두개 생성했습니다.
인자로 (이미지, 이름, 귓속말 버튼) 있는 것과
인자로 (이미지, 이름, 통화버튼, 문자버튼) 있는 생성자.
 
레이아웃과 연결되는 Activity 클래스에서는
for 문을 사용하여 list.add를 해주었습니다.

talkerList = new ArrayList<TalkerInfo>();
        
        for(int i = 0 ; i < 200 ; i++) {
        if (i % 4 == 0)
        talkerList.add(new TalkerInfo(getResources().getDrawable(R.drawable.ic_launcher), i+"김윤승 주임", getResources().getString(R.id.call_button)));
        else
        talkerList.add(new TalkerInfo(getResources().getDrawable(R.drawable.ic_launcher), i+"권일수 주임", getResources().getDrawable(R.id.call_button), getResources().getDrawable(R.id.message_button)));
        }
        // ArrayAdapter 연결
        mListView.setAdapter(new TalkerListAdapter(this, R.layout.layout_talker_row, talkerList));
        
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
//TODO
Toast.makeText(getApplicationContext(), "ITEM CLICK = " + position, Toast.LENGTH_SHORT).show();
}
});

색칠된 부분에서 각각의 생성자를 불러 add 시켰습니다..

 

Adapter 클래스는 ArrayAdapter를 상속받아 메서드들을 오버라이딩 하였으며

findViewById 메서드를 통해 각각의 뷰들과 연결을 한 후 온클릭을 구현하였습니다.

 

그런데 버튼 세개 다 Visibility 설정을 안하면 세개 다 나타나고..

Gone 시켜놓으면 세개 다 안보이고..

 

생성자를 통해 add 시켜주면 될 것 같았는데 그렇게 하는게 아닌가봐요..

Adapter 클래스에서 setVisibility(View.GONE) 같은 것을 사용해서 할라고 했는데

 

막상 리스트를 뿌려주는 곳은 activity 이고 어찌해야 하는지 알려주시면 감사하겠습니다..

 

질문이 횡설수설이라 죄송합니다..

윤둥이 (4,560 포인트) 님이 2013년 6월 5일 질문

2개의 답변

+1 추천
 
채택된 답변
여기를 한번 살펴보세요..

http://croute.me/413
  (11,920 포인트) 님이 2013년 6월 5일 답변
윤둥이님이 2013년 6월 5일 채택됨
+1 추천
정확한 설명과 코드가 필요할 듯 하구요..

버튼을 리스트뷰를 커스텀으로 구현 하셨을텐데, 버튼을 gone, invisible 하는 로직을 커스텀어댑터 안에서 구현하셔야

할듯합니다만...
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 5일 답변
...