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

커스텀 리스트뷰에서 클릭항목 불러오는법

0 추천

커스텀 리스트뷰에서 클릭한 항목의 내용을 불러올수 없나요?

Adapter에서 불러오면 마지막으로 추가한 항목의 내용만 불러와 집니다..

다른방법으로 불가능한가요?

KMCPE (260 포인트) 님이 2013년 12월 14일 질문

1개의 답변

0 추천
커스텀이라면 일단 구조가 어떨지 모르겠군요.

일단 리스트뷰는 setOnItem . . . 관련 리스너를 통해

해당 뷰에 대한 내용을 불러옵니다.
adb (830 포인트) 님이 2013년 12월 14일 답변
제가 만약 폰에 특정앱이 깔려있으면 그 앱을 리스트뷰에 넣어서,
클릭하면 그 정보를 띄우는것을 할려고 하는데
그 항목의 정보가 특정하지 않아서 그럽니다..
커스텀 리스트뷰의 간단한 구조는 텍스트3,이미지1 입니다.
그 텍스트 를 불러오는 법은 어떻게 되나요,,
화면에 출력 되는 정보가 제대로 보인다면
어댑터 쪽이 배열일겁니다.

setOnItem 리스너를 등록해서 인덱스를 알아내고,
어댑터 배열에서 해당 인덱스 위치에 있는
텍스트뷰의 값을 받아오면 됩니다.
(이렇게 밖에 얘기를 못합니다. 커스텀이라는 건 말 그대로
개발자가 마음대로 만든것이기 때문에
안에 텍스트뷰가 몇개 있다고 들어봐야 어디를 어떻게
참조할 수 있도록 한건지 알 수 없으니까요.)
어뎁터 입니다.
어떻게 해야지 불러올수 있나요?
public class Apps_List_Adapter extends ArrayAdapter<Apps_List_Data> {
    private ArrayList<Apps_List_Data> items;
     
    public Apps_List_Adapter(Context context, int textViewResourceId,
            ArrayList<Apps_List_Data> items) {
        super(context, textViewResourceId, items);
        this.items = items; }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
             
            LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.apps, null);
        }
        Apps_List_Data custom_list_data = items.get(position);
        
 
        if (custom_list_data != null) {
            //하나의 이미지뷰와 2개의 텍스트뷰 정보를 받아온다.
            ImageView iv = (ImageView)v.findViewById(R.id.apps_list_img);
            TextView tv_Main = (TextView) v.findViewById(R.id.apps_list_title_main);
            TextView tv_Sub = (TextView) v.findViewById(R.id.apps_list_title_sub);
            TextView tv_Sub2 = (TextView) v.findViewById(R.id.apps_list_title_sub2);
             
            // 현재 item의 position에 맞는 이미지와 글을 넣어준다.          
            iv.setBackgroundResource(custom_list_data.getImage_ID());
            tv_Main.setText(custom_list_data.getMain_Title());
            tv_Sub.setText(custom_list_data.getSub_Title());
            tv_Sub2.setText(custom_list_data.getSub_Title2());
        }
 
        return v;
    }
}
 
class Apps_List_Data {
    private int Image_ID;
    private String Main_Title;
    private String Sub_Title;
    private String Sub_Title2;
 
    public Apps_List_Data(int image_ID, String _Main_Title, String _Sub_Title, String _Sub_Title2) {
        this.setImage_ID(image_ID);
        this.setMain_Title(_Main_Title);
        this.setSub_Title(_Sub_Title);
        this.setSub_Title2(_Sub_Title2);
    }
 
    public int getImage_ID() {
        return Image_ID;
    }
 
    public void setImage_ID(int image_ID2) {
        Image_ID = image_ID2;
    }
 
    public String getMain_Title() {
        return Main_Title;
    }
 
    public void setMain_Title(String main_Title) {
        Main_Title = main_Title;
    }
 
    public String getSub_Title() {
        return Sub_Title;
    }
 
    public void setSub_Title(String sub_Title) {
        Sub_Title = sub_Title;
    }
 
    public String getSub_Title2() {
        return Sub_Title2;
    }
 
    public void setSub_Title2(String sub_Title2) {
        Sub_Title2 = sub_Title2;
    }
     
}
String Main_Title = Apps_List_Adapter의 변수명.getItem(인덱스).Main_Title;

이렇게 하면 되겠네요.
Item이 없다고 뜹니다...
에러가 난다는건가요?

아예 빈칸으로 뜬다는건가요?
아,
item이 아니고 Sub_Title()를 getSub_Title()로 바꾸는게 맞는건가요?
그러고보니 리턴 함수가 있네요.

그렇게 해서 결과가 나온다면
그렇게 하시는게 좋아요.
와,,정말 감사합니다!
...