안녕하세요~

Listview 로 화면을 하나 구성하려고 하는데요,...

image + text + button 입니다.

여기저기 돌아다니면서 소스를 구하고 해보았는데요....

button 이 눌러지는것은 되는데...

해당 버튼을 포함하는 list 의 row 를 선택하였을때, 선택의 느낌 (press 되었다는 색) 도 없고....

이를 받아오는 방법도 몰라서 이렇게 질문합니다.

(AdapterView.OnItemClickListener mItemClickListener  로 들어와야 할것같은데.. 안들어 오네요.. ㅜㅜ;;)

 

소스는 아래와 같습니다.

 

<   ZzzztestActivity.java   >

public class ZzzztestActivity extends Activity {
    ArrayList<MyItem> arItem;
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.friendlistview);
       
        arItem = new ArrayList<MyItem>();
        MyItem mi;
        mi = new MyItem(R.drawable.icon, "samsong"); arItem.add(mi);
        mi = new MyItem(R.drawable.icon, "Rg"); arItem.add(mi);
        mi = new MyItem(R.drawable.icon, "Dewoo"); arItem.add(mi);

       
        MyListAdapter MyAdapter = new MyListAdapter(this, R.layout.friendlistitem, arItem);
       
        ListView MyList;
        MyList = (ListView)findViewById(R.id.list);
        MyList.setAdapter(MyAdapter);
       
        MyList.setOnItemClickListener(mItemClickListener);
    }
   

   // 이부분 들어오질 않네요... 어떻게 해야하나요??
    AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            String mes;
            mes = "position = " + Integer.toString(position) + ", id = " + Long.toString(id);
            Toast.makeText(ZzzztestActivity.this, mes, Toast.LENGTH_SHORT).show();
        }
       
    };
   

    class MyItem{
        MyItem(int aIcon, String aName)
        {
            Icon = aIcon;
            Name = aName;
        }
        int Icon;
        String Name;
    }
   
    class MyListAdapter extends BaseAdapter{
        Context maincon;
        LayoutInflater Inflater;
        ArrayList<MyItem> arSrc;
        int layout;
       
        public MyListAdapter(Context context, int alayout, ArrayList<MyItem> aarSrc)
        {
            maincon = context;
            Inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            arSrc = aarSrc;
            layout = alayout;
        }
       
        public int getCount()
        {
            return arSrc.size();
        }
       
        public String getItem(int position)
        {
            return arSrc.get(position).Name;
        }
       
        public long getItemId(int position)
        {
            return position;
        }
       
        public View getView(int position, View convertView, ViewGroup parent)
        {
            final int pos = position;
           
            if(convertView == null)
            {
                convertView = Inflater.inflate(layout, parent, false);
            }
           
            ImageView img = (ImageView)convertView.findViewById(R.id.img);
            img.setImageResource(arSrc.get(position).Icon);
           
            TextView txt = (TextView)convertView.findViewById(R.id.text);
            txt.setText(arSrc.get(position).Name);
           
            Button btn = (Button)convertView.findViewById(R.id.btn);
            btn.setOnClickListener(new Button.OnClickListener() {
                public void onClick(View v) {
                    String str = arSrc.get(pos).Name + "를 주문합니다.";
                    Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
                }
            });
           
            return convertView;
        }
    }
}

 

 

<   friendlistview.xml   >

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text = "아웅"
/>

<ListView
    android:id="@+id/list" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
</LinearLayout>

 

 

<   friendlistitem.xml   >

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="60px"
    android:padding="5px"
    >
<ImageView
    android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    />
<TextView 
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/img"
    />
<Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text = "버튼"
    />
</RelativeLayout>

 

 

버튼은 눌러보면 눌러짐을 알수 있는데....

정작... List 의 항목 (열) 을 눌러보면 아무 동작이 없습니다.

이것을 눌러지는 효과와 받아오는 방법이 있는지요??

 

AdapterView.OnItemClickListener mItemClickListener  리스너 함수 사용이 아닌건가요?? ㅜㅜ;;