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

ListView Toast 예제 문의

0 추천
http://kitesoft.tistory.com/67

상기주소를 예제를 따라하는 도중

2번(ArrayAdapter)까지는 하였습니다.

3번(Toast) 예제 소스코드 입력한 후
실행 했습니다.

2번 실행했을 때와 동일한 에뮬레이터만 나오구,
토스트(Toast)는 뜨지 않습니다.
무엇이 문제인가요?
세봉아 (500 포인트) 님이 2016년 1월 6일 질문

1개의 답변

0 추천
둘중 하나일것 같은데요...

리스트뷰에 리스너를 등록 안하셨던가

아니면 toast로 makeText한 후 show를 호출 안하셨던가..
모나미153 (17,540 포인트) 님이 2016년 1월 6일 답변
http://kitesoft.tistory.com/67

상기 주소 게시물 대로 코드는 정확히 입력했습니다.
activity_main.xml 이랑
MainActivity.java 말고
다른것도 수정/추가 해줘야 하는건가요?
코드를 봐야 알 것 같습니다.
MainActivity.java 코드


package com.example.listviewtest;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {

    //대량의 문자열 데이터를 저장할 Arraylist 객체 생성
    ArrayList<String> mDatas = new ArrayList<String>();

    ListView listview;     //ListView 참조변수

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        //문자열 데이터 ArrayList에 추가
        mDatas.add("KOREA");
        mDatas.add("CANADA");
        mDatas.add("FRANCE");
        mDatas.add("MEXICO");
        mDatas.add("POLAND");
        mDatas.add("SAUDI ARABIA");
       
        Log.v("Test", "  "+mDatas.size());
        //ListView가 보여줄 뷰를 만들어내는 Adapter 객체 생성
        //ArrayAdapter: 문자열 데이터들을 적절한 view로 1:1로 만들어서 List형태로 ListView에 제공하는 객체
        //첫번째 파라미터: Context객체 -> MainActivity가 Context를 상속했기 때문에 this로 제공 가능
        //두번째 파라미터: 문자열 데이터를 보여줄 뷰. ListView에 나열되는 하나의 아이템 단위의 뷰 모양
        //세번째 파라미터: adapter가 뷰로 만들어줄 대량의 데이터들
        //본 예제에서는 문자열만 하나씩 보여주면 되기 때문에 두번째 파라미터의 뷰 모양은 Android 시스템에서 제공하는
        //기본 Layout.xml 파일을 사용함.
        ArrayAdapter adapter= new ArrayAdapter(this, android.R.layout.simple_list_item_1, mDatas);
       
        listview= (ListView)findViewById(R.id.listview);
        listview.setAdapter(adapter); // 위에 만들어진 ListView에 설정: xml에서 'entries' 속성
       
        //ListView의 아이템 하나가 클릭되는 것을 감지하는 Listener객체 생성 (Button의 OnClickListener와 같은 역할)
        OnItemClickListener listener= new OnItemClickListener() {
           
            //ListView의 아이템 중 하나가 클릭될 때 호출되는 메소드
            //첫번째 파라미터: 클릭된 아이템을 보여주고 있는 AdapterView 객체(여기서는 ListView객체)
            //두번째 파라미터: 클릭된 아이템 뷰
            //세번째 파라미터: 클릭된 아이템의 위치(ListView이 첫번째 아이템(가장위쪽)부터 차례대로 0,1,2,3...)
            //네번째 파라미터: 클릭된 아이템의 아이디(특별한 설정이 없다면 세번째 파라미터인 position과 같은 값)
           
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //TODO Auto-generated method stub
               
                //클릭된 아이템의 위치를 이용하여 데이터인 문자열을 Toast로 출력
                Toast.makeText(MainActivity.this, mDatas.get(position), Toast.LENGTH_SHORT).show();
               
            }
           
        };
    }
}


activity_main.xml 코드

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

</RelativeLayout>
listview.setOnItemClickListener(listener);
이 줄이 빠졌습니다.
리스트뷰에 리스너를 등록 안하셨네요~~
해결했습니다
감사합니다~
...