Question

Je veux que mon élément de liste réponde toujours au onListItemClick() mais en plus je veux qu'une image supplémentaire dans un raw ait son propre événement de clic.Ce que j'ai trouvé, c'est que je dois définir mon propre adaptateur de liste etremplacer la méthode onClickListener .J'ai verrouillé la définition d'une nouvelle classe d'adaptateur, je n'ai jamais utilisé d'adaptateur personnalisé.Je veux naviguer dans les onglets, onListItemClick () aller à l'onglet 1 et sur ImageClick aller à l'onglet 2. Cela fonctionne pour getView() mais lorsque j'ajoute le deuxième événement de clic pour l'image, l'application se bloque avec NullPointerException à MySimpleAdapter.getView ().Toute aide sera appréciée.Merci.

public class ListaActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);

    MySimpleAdapter adapter = new MySimpleAdapter(this, elem, R.layout.list_item,
            new String[]{"name","number","address"}, new int[]{R.id.name,R.id.num,R.id.adr});
    setListAdapter(adapter);
   }
    public class MySimpleAdapter extends SimpleAdapter{
    Context context;
    //Activity activity;
public MySimpleAdapter(Context context, ArrayList<HashMap<String, String>> elements,int layout, String [] from, int [] to ){
        super(context,el,layout,from,to);
            this.context = context;
            //this.activity = (Activity) context;
    }

    @Override
    public View getView(int position,View convertView, ViewGroup parent){
        View view = super.getView(position, convertView, parent);
        ImageView image = (ImageView)findViewById(R.id.btn);
        image.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int tab=2;
                MyTabActivity.switchToTab(tab);
            }
        });
        return view;
    }   


@Override
protected void onListItemClick(ListView l, View v, int position, long id){
     int tab = 1;
     MyTabActivity.switchToTab(tab);
   }
 }
Était-ce utile?

La solution

Modifier la ligne ci-dessous à partir de:

ImageView image = (ImageView)findViewById(R.id.btn);

à

ImageView image = (ImageView)view.findViewById(R.id.btn);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top