2016-07-23 5 views
0

Ich versuche OnClickListener in meinem CustomAdapter arbeiten, aber nichts passiert in meinem Fall.setOnClickListener in CustomAdapter

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    if(inflater == null){ 
     inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    if(view==null){ 
     view=inflater.inflate(R.layout.list_item_blog,viewGroup,false); 
     ListView lv = (ListView) view.findViewById(R.id.listView); 

    if(lv!=null){ 
      lv.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Dialog d = new Dialog(view.getContext()); 
       d.setContentView(R.layout.dialog_layout); 
       d.show(); 
      } 
     }); 
    } 
    } 
+0

Haben Sie eine Listenansicht in einer Listenansicht? Können Sie auch Ihr Layout xmls – chejaras

+0

Debug und geben Sie einen Haltepunkt in der Zeile 'setOnClickListener' und sehen, ob es jemals diese Zeile trifft. – Vucko

+0

Sie legen einen ItemClickListner für die Listenansicht fest, an die der Adapter gebunden ist. Nicht innerhalb des Adapters –

Antwort

0

Ich bezweifle, dass Sie eine ListView innerhalb Ihrer lLstItemView haben. Was Sie gerade tun, ist, Ihr Listenelement zu bekommen und dann zu versuchen, ein ListView darin zu finden, um Ihren Klick-Listener zu setzen.

Wenn Sie tatsächlich einen Klick Zuhörer auf die gesamte Liste setzen, dann sollten Sie dies entweder in Ihrer Tätigkeit tun, oder Sie es, indem Sie die clicklistener oder die Eltern setzen konnte viewGroup, die als Parameter übergeben wird:

viewGroup.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    Dialog d = new Dialog(view.getContext()); 
    d.setContentView(R.layout.dialog_layout); 
    d.show(); 
    } 
}); 

Wenn Sie den Klick-Listener auf dem Listenelement setzen, dann sollten Sie die clicklistener auf Ihrem Listview in Sie Aktivitätscode festgelegt ListView.setOnItemClickListener(ClickListener) mit:

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
    Dialog d = new Dialog(view.getContext()); 
    d.setContentView(R.layout.dialog_layout); 
    d.show(); 
    } 
}); 

Wenn Sie den Klick Zuhörer festlegen möchten In einer Ansicht innerhalb des Listenelements stellen Sie dann sicher, dass Sie die richtige untergeordnete Ansicht erhalten, indem Sie überprüfen, dass die ID der Ansicht, die Sie erhalten möchten, in list_item_blog existiert.

Viel Glück! Hoffe das hilft.

+0

Nein ... Sie sollten 'listview.setOnItemClickListener' verwenden –

+0

das ist wahr, wenn Sie es auf das gesamte Element setzen möchten, sollten Sie' setOnItemClickListener' verwenden, um meine Antwort zu aktualisieren. –

Verwandte Themen