클릭하면 Logcat에는 원하는 값이 잘 나옵니다.
근데 토스트를 쓰려고 하니 context로 뭘 써야 할지 모르겠습니다.
getApplicationContext()등도 안되더라구요.
imgBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i("buttonclick", v.getTag()); Toast.makeText(context, v.getTag(), Toast.LENGTH_SHORT); } });
어떤 걸 잡아 줘야 토스트 메세지를 볼 수 있을까요?
Logcat으로 찍어보니 Context값은 제대로 넘어왔는데 왜 안뜨는지를 모르겠습니다.
Toast.makeText(context, v.getTag(), Toast.LENGTH_SHORT).show();
제가 공부할때 해봤던데 말한게 맞는지 모르겠네요
----------------------------------------------------------------------------------------------------------------------------
[ main.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/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
----------------------------------------------------------------------------------------------------------------------------
[ view.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"
>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"
/>
</LinearLayout>
----------------------------------------------------------------------------------------------------------------------------
[ ListViewExam.java ]
----------------------------------------------------------------------------------------------------------------------------
package com.android.listview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
public class ListViewExam extends Activity {
private ArrayList<String> list;
private ListView listview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list = new ArrayList<String>();
listview = (ListView) findViewById(R.id.listview);
for(int i=1; i<4; i++)
list.add(""+i);
ListViewCustom lvc = new ListViewCustom(this, R.layout.view, list);
listview.setAdapter(lvc);
lvc.notifyDataSetChanged();
}
class ListViewCustom extends ArrayAdapter
{
private Context context;
private ArrayList list;
public ListViewCustom(Context context, int textViewResourceId, ArrayList list) {
super(context, textViewResourceId, list);
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null)
{
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.view, null);
}
ImageView img = (ImageView) convertView.findViewById(R.id.img);
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, listview.getPositionForView(v) + " 번째 클릭", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
}
그리고 해당 Context 값을 가져오면되지요...
MyAdpater my = new MyContext(getApplicationContext() , xxxxxx)
하고 MyAdapter의 생성자에서
private Context com;
MyAdapter(Context com , xxxx){
this.com = com '
}
하고 getView 에서 com을 넣으면되지요.....
저방법외에도 여러방법이 있을듯...