如何从列表视图中设置 Onclick ImageView adapter.java
How to setOnclick ImageView from listview inside adapter.java
我的问题是关于 "how to setOnClick ImageView from ListView"
Adapter.java
public class Adapter extends BaseAdapter implements OnClickListener{
Context context;
ArrayList<Contact> list;
LayoutInflater inflater;
public Adapter(Context context, ArrayList<Contact> list) {
super();
this.context = context;
this.list = list;
this.inflater =
LayoutInflater.from(context);
}
public View getView(int arg0, View arg1, ViewGroup arg2) {
ContactView pv=null;
if(arg1==null)
{
arg1= inflater.inflate(R.layout.additem, null);
pv = new ContactView();
pv.iv=(ImageView) arg1.findViewById(R.id.imageView1);
pv.name=(TextView) arg1.findViewById(R.id.textView1);
pv.number=(CheckedTextView) arg1.findViewById(R.id.checkedTextView1);
pv.message=(ImageView) arg1.findViewById(R.id.imageView2);
arg1.setTag(pv);
}
else
{
pv=(ContactView) arg1.getTag();
pv.iv.setImageURI(
list.get(arg0).getImage());
pv.name.setText( list.get(arg0).getName());
pv.number.setText( String.valueOf(list.get(arg0).getNumber()));
pv.message=(ImageView)
arg1.findViewById( R.id.imageView2);
pv.message.setOnClickListener( this);
return arg1;
}
}
static class ContactView{
ImageView iv;
TextView name;
CheckedTextView number;
ImageView message;
}
}
当我从列表视图中设置点击消息 (ImageView) 时,它说
"FATAL EXCEPTION: main"
"Unable to start Activity"
"java.lang.NullPointerException"
.
MainActvity.java
ArrayList<Contact> list = new ArrayList<Contact>();
Adapter adapter;
ImageView message;
protected void onCreate(Bundle savedInstanceState) {
this.lv = (ListView) this.findViewById(R.id.listView1);
this.adapter=new MyAdapter(this,list);
this.lv.setAdapter(adapter);
}
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(this, "sample", Toast.LENGTH_SHORT).show();
}
有人可以帮我如何从列表视图中设置点击消息(ImageView)吗??谢谢
试试看,
holder.vehicle_address.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"Click",Toast.LENGTH_SHORT).show();
}
});
我认为您应该在适配器内部设置取消点击...在每个项目上,activity 将不会在开始时找到该视图
类似
pv.message.setClickable(true);
pv.message.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(arg0.getContext(), "sample", Toast.LENGTH_SHORT).show();
}
});
尝试:pv.message.setOnClickListener(v -> {});
。
或者:
pv.message.setOnClickListener(new View.OnClickListener() {
@Override
public void OnClick(View v) {
// Your Code
}
});
我的问题是关于 "how to setOnClick ImageView from ListView"
Adapter.java
public class Adapter extends BaseAdapter implements OnClickListener{
Context context;
ArrayList<Contact> list;
LayoutInflater inflater;
public Adapter(Context context, ArrayList<Contact> list) {
super();
this.context = context;
this.list = list;
this.inflater =
LayoutInflater.from(context);
}
public View getView(int arg0, View arg1, ViewGroup arg2) {
ContactView pv=null;
if(arg1==null)
{
arg1= inflater.inflate(R.layout.additem, null);
pv = new ContactView();
pv.iv=(ImageView) arg1.findViewById(R.id.imageView1);
pv.name=(TextView) arg1.findViewById(R.id.textView1);
pv.number=(CheckedTextView) arg1.findViewById(R.id.checkedTextView1);
pv.message=(ImageView) arg1.findViewById(R.id.imageView2);
arg1.setTag(pv);
}
else
{
pv=(ContactView) arg1.getTag();
pv.iv.setImageURI(
list.get(arg0).getImage());
pv.name.setText( list.get(arg0).getName());
pv.number.setText( String.valueOf(list.get(arg0).getNumber()));
pv.message=(ImageView)
arg1.findViewById( R.id.imageView2);
pv.message.setOnClickListener( this);
return arg1;
}
}
static class ContactView{
ImageView iv;
TextView name;
CheckedTextView number;
ImageView message;
}
}
当我从列表视图中设置点击消息 (ImageView) 时,它说
"FATAL EXCEPTION: main"
"Unable to start Activity"
"java.lang.NullPointerException"
.
MainActvity.java
ArrayList<Contact> list = new ArrayList<Contact>();
Adapter adapter;
ImageView message;
protected void onCreate(Bundle savedInstanceState) {
this.lv = (ListView) this.findViewById(R.id.listView1);
this.adapter=new MyAdapter(this,list);
this.lv.setAdapter(adapter);
}
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(this, "sample", Toast.LENGTH_SHORT).show();
}
有人可以帮我如何从列表视图中设置点击消息(ImageView)吗??谢谢
试试看,
holder.vehicle_address.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
Toast.makeText(context,"Click",Toast.LENGTH_SHORT).show(); } });
我认为您应该在适配器内部设置取消点击...在每个项目上,activity 将不会在开始时找到该视图
类似
pv.message.setClickable(true);
pv.message.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(arg0.getContext(), "sample", Toast.LENGTH_SHORT).show();
}
});
尝试:pv.message.setOnClickListener(v -> {});
。
或者:
pv.message.setOnClickListener(new View.OnClickListener() {
@Override
public void OnClick(View v) {
// Your Code
}
});