Search code examples
javaandroidlistviewimageviewbaseadapter

How to setOnclick ImageView from listview inside adapter.java


My Question is about on "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;
    }
}

When I setOnClick message(ImageView) from listview its says

"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();
}

Somebody could help me how to setOnClick message(ImageView) from listview?? thanks


Solution

  • i think you should set de click inside the adapter... on each item, the activity won't find that view at start

    something like

    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();
            }
        });