안녕하세요~
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 리스너 함수 사용이 아닌건가요?? ㅜㅜ;;




넹 `~ ㅎㅎ 2가지 방법이 있겠네요.
거의 set을 this로 설정해서 implement시켜 사용하는데..
여기서는 아래 굵은글자 삭제하고 테스트해보세용~~ ㅎ
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();
}
};
안되면. 아래 굵은글씨처럼 구현.ㅎ