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

리스트뷰에 여러 항목이 있으면 클릭을할때 position을 출력 하려고합니다

0 추천

리스트뷰에 여러 항목이 있으면 클릭을할때 position을 출력 하려고합니다

이러저런 검색결과 리스트뷰.setOnItemClickListener를 코딩하라고 해서 해봣는데 먹히질않네요..

도움좀 주십쇼.. 길더라도 한번 봐주시면 감사하겠습니다..

 

protected void onPostExecute(String result){
    myJSON=result;
    showList();
}

protected void showList(){
        try {
            JSONObject jsonObj = new JSONObject(myJSON);
            peoples = jsonObj.getJSONArray(TAG_RESULTS);

            for(int i=0;i<peoples.length();i++){
                JSONObject c = peoples.getJSONObject(i);
                String name = c.getString(TAG_NAME);
                String address = c.getString(TAG_ADD);
                String addCode = c.getString(TAG_ADDCODE);
                String showday = c.getString(TAG_DAY);
                String showtime = c.getString(TAG_TIME);
                String showtime2 = c.getString(TAG_TIME2);
                String member = c.getString(TAG_MEMBER);
                HashMap<String,String> persons = new HashMap<String,String>();
                persons.put(TAG_NAME,name);
                persons.put(TAG_ADD,address);
                persons.put(TAG_DAY,showday);
                persons.put(TAG_TIME,showtime);
                persons.put(TAG_TIME2,showtime2);
                persons.put(TAG_MEMBER,member);
                persons.put(TAG_ADDCODE,addCode);
                personList.add(persons);
            }
            ListAdapter adapter = new SimpleAdapter(
                    Show_list_Activity.this, personList,
                    R.layout.list_item,
                    new String[]{TAG_NAME,TAG_ADD,TAG_DAY,TAG_TIME,TAG_TIME2,TAG_MEMBER},
                    new int[]{ R.id.name, R.id.address,R.id.showday,R.id.showtime,R.id.showtime2,R.id.member}
            );
            list.setAdapter(adapter);
            list.setTextFilterEnabled(true);
            list.setClickable(true);
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Toast.makeText(getApplicationContext(),position, Toast.LENGTH_LONG).show();
                    Log.d("포지션",position+"");
                }
            });
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

 

신입생 (510 포인트) 님이 2016년 10월 13일 질문

1개의 답변

0 추천

Toast.makeText는 두가지 형태의 메소드가 있습니다.

public static Toast makeText(Context context, @StringRes int resId, @Duration int duration)
                            throws Resources.NotFoundException {
    return makeText(context, context.getResources().getText(resId), duration);
}

님처럼 int 타입의 position을 파라미터로 넘기면 위의 메소드가 호출됩니다. 즉, position이라는 리소스를 찾게 됩니다. 따라서 리소스가 없으면 에러가 나게 됩니다.

spark (227,930 포인트) 님이 2016년 10월 13일 답변
...