2017-03-01 4 views
2

Ich bin ziemlich neu in Android und arbeitete auf anklickbare Listenansicht, Problem, das ich begegne, ist alles in Ordnung, außer weder das Toast wird angezeigt, noch wird die Ausgabe im Terminalfenster angezeigt. Meine listView Dosis kein Bild Kind, seine nur Texte in Listenform. Daher kein Problem der Focusability. Hier ist mein CodeClickable listView funktioniert nicht

public class FavoritePage extends AppCompatActivity implements OnItemClickListener { 

private ListView lv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_favorite_page); 
    DataBaseHandler db = new DataBaseHandler(this); 
    db.add_activity(""); 
    lv = (ListView) findViewById(R.id.listView); 
    ArrayAdapter<String> arr2 = new ArrayAdapter<String>(getApplicationContext(), R.layout.simple_colum, db.getalllist()); 
    lv.setAdapter(arr2); 
    db.del_activity(""); 


} 


@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    String data = (String) parent.getItemAtPosition(position); 
    Toast.makeText(getApplicationContext(), "This is my Toast message!", 
      Toast.LENGTH_LONG).show(); 
    System.out.println("***************************************************************" + data); 
}} 

Jede Idee, warum es tut so .. ??

+0

Nun versuchen, müssen Sie zuerst den Hörer zur Listenansicht eingestellt. Etwas wie: 'lv.setOnItemClickListener (this)'. Fügen Sie dies in Ihrem onCreate() direkt unter Ihrem 'findViewById()' Code – mt0s

+1

Danke, es funktionierte wie ein Charme, schreibe deine Antwort unten, so dass ich es richtig markieren kann –

Antwort

1

Nun, zuerst müssen Sie den Listener auf die ListView setzen. Etwas wie: lv.setOnItemClickListener(this).

Fügen Sie dies in Ihrem onCreate() direkt unter Ihrem findViewById() Code.

+0

danke, es hat funktioniert. –

1

Ich denke, der folgende Code Ihnen helfen kann: -

lv.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

        String data = (String) parent.getItemAtPosition(position); 
    Toast.makeText(getApplicationContext(), "This is my Toast message!", 
      Toast.LENGTH_LONG).show(); 
    System.out.println("***************************************************************" + data); 
      }); 
1

Sie verpassen die onItemClickListener Einstellung.

Fügen Sie diese Zeile lv.setOnItemClickListener(this) nach dieser Zeile lv = (ListView) findViewById(R.id.listView); in onCreate Methode hinzu.

Auch würde ich empfehlen, CamelCase style bei der Java-Programmierung zu verwenden.

1

Statt in der Aktivität der Umsetzung OnItemClickListener, können Sie so etwas wie unten

public class FavoritePage extends AppCompatActivity { 

private ListView lv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_favorite_page); 
    DataBaseHandler db = new DataBaseHandler(this); 
    db.add_activity(""); 
    lv = (ListView) findViewById(R.id.listView); 
    ArrayAdapter<String> arr2 = new ArrayAdapter<String>(getApplicationContext(), R.layout.simple_colum, db.getalllist()); 
    lv.setAdapter(arr2); 
    lv.setOnItemClickListener(clickListener); 
    db.del_activity(""); 
} 

private AdapterView.OnItemClickListener clickListener = new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    } 
}; 

}