2011-12-06 3 views
0

Je veux que ma listitem pour répondre encore à onListItemClick() mais en plus je veux une image supplémentaire dans un cru à son propre événement de clic. La manière classique, définissant onClickListener pour l'image ne travail. What I have found is that I have to define my own listadapter and override getView() method. J'ai verrouillé la définition de la nouvelle classe d'adaptateur, je n'ai jamais utilisé un adaptateur personnalisé. Je veux parcourir les onglets, onListItemClick() aller à l'onglet 1 et sur ImageClick aller à l'onglet 2. Cela fonctionne pour onListItemClick() mais quand 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.onListItemClick() + image cliquable sur ListView

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); 
    } 
} 
+0

post stacktrace et aussi où définir vous onglet? – user370305

Répondre

1

changement de ligne ci-dessous:

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

à

ImageView image = (ImageView)view.findViewById(R.id.btn); 
+0

Votre solution semble fonctionner correctement: D Pourriez-vous me dire si je pourrais étendre aussi 'CursorAdapter' au lieu de' SimpleAdapter'? Je veux dire si le seul changement que je dois faire est dans le constructeur de l'adaptateur? 'nouveau SimpleCursorAdapter (this, R.layout.item_list, curseur, FROM, TO);' Merci! – AlexAndro

+0

Selon ma compréhension, vous pouvez étendre la classe MySimpleAdapter avec SimpleCursorAdapter, puis réécrire le reste de la même chose, essayez si cela vous aide. – Maneesh

Questions connexes