안녕하세요 초보개발자 입니다.
아래와 같은리스트 뷰를 뿌리는 중 입니다.
------------------- 리스트 -------------------------------------------------------
(이미지) 이름 (전화버튼) (문자버튼) (귓속말 버튼)
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 이고 어찌해야 하는지 알려주시면 감사하겠습니다..
질문이 횡설수설이라 죄송합니다..