设置 ListView 项的 ImageView 的 onClickLitener

set onClickLitener of ImageView of a item of ListView

我有一个关于 ListView 的问题。是否可以将每个项目取一个 ImageView 然后按此 A activity 开始?

我不知道如何实现 OnClickListener 方法。

谁能给我建议?

我认为它在 CustomAdapter 的 class 中,但不知道是否无法将 intent 从 activity 移出,因为我在另一个 class 中有适配器] 不是 activity 是 运行。我是否必须将自定义适配器 class 放在 class 中,其中 activity 是 ListView

谢谢!

CustomHolder:

public class ObrasAdapter extends ArrayAdapter<Obra> {
    private Context context;
    private ArrayList<Obra> datos;

    public ObrasAdapter(Context context, ArrayList<Obra> datos) {
        super(context, R.layout.listview_item, datos);

        this.context = context;
        this.datos = datos;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View item = convertView;
        ObrasHolder holder;

        if (item == null) {
            item = LayoutInflater.from(context).inflate(R.layout.listview_item,
                    null);

            holder = new ObrasHolder();
            holder.foto = (ImageView) item.findViewById(R.id.imgAnimal);
            holder.num = (TextView) item.findViewById(R.id.numC);
            holder.iden = (TextView) item.findViewById(R.id.idenC);
            holder.ubi = (TextView) item.findViewById(R.id.ubiC);
            holder.hombres = (TextView) item.findViewById(R.id.homC);
            holder.material = (TextView) item.findViewById(R.id.matC);
            holder.eq1 = (TextView) item.findViewById(R.id.eq1);
            holder.eq2 = (TextView) item.findViewById(R.id.eq2);
            holder.eq3 = (TextView) item.findViewById(R.id.eq3);
            holder.eq4 = (TextView) item.findViewById(R.id.eq4);
            holder.g1 = (TextView) item.findViewById(R.id.g1);
            holder.g2 = (TextView) item.findViewById(R.id.g2);
            holder.g3 = (TextView) item.findViewById(R.id.g3);
            holder.g4 = (TextView) item.findViewById(R.id.g4);
            holder.fondo = (RelativeLayout) item.findViewById(R.id.fondobra);
            holder.cam = (ImageView) item.findViewById(R.id.cam);

            item.setTag(holder);
        }
        holder = (ObrasHolder) item.getTag();

        holder.foto.setImageResource(datos.get(position).getDrawableImageID());

        if(Integer.parseInt(datos.get(position).getHom().trim())/2==1)
            holder.g1.setTextColor(Color.BLACK);
        if(Integer.parseInt(datos.get(position).getHom().trim())/2==2)
        {
            holder.g1.setTextColor(Color.BLACK);
            holder.g2.setTextColor(Color.BLACK);
        }
        if(Integer.parseInt(datos.get(position).getHom().trim())/2==3)
        {
            holder.g1.setTextColor(Color.BLACK);
            holder.g2.setTextColor(Color.BLACK);
            holder.g3.setTextColor(Color.BLACK);
        }
        if(Integer.parseInt(datos.get(position).getHom().trim())/2==4)
        {
            holder.g1.setTextColor(Color.BLACK);
            holder.g2.setTextColor(Color.BLACK);
            holder.g3.setTextColor(Color.BLACK);
            holder.g4.setTextColor(Color.BLACK);
        }

        //Inicializamos los equipos
        holder.eq1.setText("1");
        holder.eq2.setText("2");
        holder.eq3.setText("3");
        holder.eq4.setText("4");

        return item;
    }

}

主要class:

public class Inventario extends Activity implements OnItemClickListener {
    private ArrayList<Obra> obras;
    private ListView lvObras;
    private ObrasAdapter adapter;
    private TextView num, iden,ubi,hombres,material;
    private int pulsado = -1;

    List<String> equiDisp;
    ArrayList<String> marcado;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inventario);

        equiDisp = new ArrayList<String>();
        marcado = new ArrayList<String>();

        for(int i=1; i<11; i++)
        {
            equiDisp.add(String.valueOf(i));
        }

        obras = new ArrayList<Obra>();

        rellenarArrayList();

        actualizarDisplay();
    }

    public void actualizarDisplay()
    {
        adapter = new ObrasAdapter(this, obras);

        lvObras = (ListView) findViewById(R.id.lvItems);
        lvObras.setAdapter(adapter);
        lvObras.setOnItemClickListener(this);
    }

    private void rellenarArrayList() 
    {
        obras.add(new Obra("08", "San","S","4","P,C,2 ", R.drawable.sa008p,1,0));
        ...

    }

    @Override
    public void onItemClick(AdapterView<?> adapter, View view, int position,long ID) {

        pulsado = position;

        final String[] opciones = new String[] { "Asignar Equipo", "Ver ficha","Marcar como rescatado"};
        final AlertDialog.Builder dialogo = new AlertDialog.Builder(Inventario.this);
        dialogo.setCancelable(true);
        dialogo.setTitle("Accion a realizar: ");
        dialogo.setItems(opciones, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {

                if (item == 0)
                {                       
                    for(int i=0;i<marcado.size();i++)
                    {
                        for(int j=0; j<equiDisp.size(); j++)
                        {
                            if(marcado.get(i).trim().equals(equiDisp.get(j).trim()))
                                equiDisp.remove(j);
                        }
                    }

                    final String[] opciones= equiDisp.toArray(new String[equiDisp.size()]);
                    final boolean [] selected = new boolean[equiDisp.size()];

                    AlertDialog.Builder selec = new AlertDialog.Builder(Inventario.this);
                    selec.setTitle("Asigne equipo/equipos de rescate a la obra: ")
                        .setPositiveButton("Aceptar",new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                actualizarDisplay();
                             }
                        })
                        .setMultiChoiceItems(opciones, selected, new DialogInterface.OnMultiChoiceClickListener() {
                        public void onClick(DialogInterface dialogInterface, int item, boolean b) {
                            marcado.add(opciones[item]);
                            obras.get(pulsado).equiA.add(Integer.parseInt(opciones[item]));
                        }

                    });

                    selec.create().show();  

                }
                if (item ==1)
                {                   
                    Intent passIntent = new Intent();
                    passIntent.setClass(Inventario.this, VerFicha.class);

                    Bundle bundle = new Bundle();
                    bundle.putCharSequence("inv",obras.get(pulsado).getNum());

                    passIntent.putExtras(bundle);
                    startActivity(passIntent);
                }

                if (item ==2)
                {
                    obras.get(pulsado).setEstado(1);

                    for (int j =0; j<marcado.size();j++)
                    {
                        for (int k =0; k<obras.get(pulsado).equiA.size();k++)
                        {
                            if(marcado.get(j)== String.valueOf(obras.get(pulsado).equiA.get(k)))
                                marcado.remove(j);
                        }

                    }
                    actualizarDisplay();

                }
            }
        });
        dialogo.create();
        dialogo.show(); 
    }

}

public class YourAdapter extends BaseAdapter{
Context context;
public YourAdapter (Context c) {
    context = c;
}

@Override
public int getCount() {

}

@Override
public Object getItem(int position) {

}

@Override
public long getItemId(int position) {

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = new ViewHolder();
    if(convertView == null){
        convertView = inflater.inflate(R.layout.layout_adapter_display_project_list, null);
        holder.img = (ImageView)convertView.findViewById(R.id.img);         
        convertView.setTag(holder);
    }
    else{
        holder = (ViewHolder)convertView.getTag();
    }
    holder.img.setOnClickListener(new OnClickListener() {           
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, AnotherClass.class);
            context.startActivity(intent);              
        }
    });
    return convertView;
}   
static class ViewHolder{
    public ImageView img;
}
}
public class MyAdapter extends ArrayAdapter<String> {

    public MyAdapter(Context context, int textViewResourceId,   String[] objects) {
        super(context, textViewResourceId, objects);
    }

    @Override
    public View getDropDownView(int position, View convertView,ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }

    public View getCustomView(int position, View convertView, ViewGroup parent) {

        /*LayoutInflater inflater=getLayoutInflater();
        View row=inflater.inflate(R.layout.row, parent, false);
        label =(TextView)row.findViewById(R.id.company);
        label.setText(strings[position]);

        ImageView icon=(ImageView)row.findViewById(R.id.image);
        icon.setImageResource(arr_images[position]);*/
//do anything

        }

        return row;
    }
}