2016-06-10 15 views
1

Ich habe ein folgendes Problem. Ich erstelle ein listView, das dann das benutzerdefinierte layout item_event verwendet, das bestimmte Daten anzeigt. Das alles funktioniert. Jetzt möchte ich, dass die App mir erlaubt, zu neuen Aktivitäten zu wechseln, wenn ich auf eines der Elemente in der ListView klicke. Mein MainMenu erweitert ListActivity, sodass ich setListAdapter verwenden kann. Wie kann ich jetzt den setOnItemClickListener verwenden? Ich habe versucht, ein ListView-Objekt zu erstellen und dann darauf zu verweisen, aber ich kann nicht darauf zugreifen, da es android ist: id = "@ android: id/list" />. Wie es geht?Einstellung von OnItemClickListener in einer Hauptaktivität, die ListView erweitert

package com.mysampleapp; 

import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.app.ListActivity; 


import com.userpreferencesom.AmazonClientManager; 
import com.userpreferencesom.DynamoDBManager; 

import java.util.ArrayList; 



public class MainMenu extends ListActivity { 

    //ListView eventsList; 
    Button newEvent; 
    Event event= new Event(); 
    //ArrayList<Event> eventList = new ArrayList(); 


    public static AmazonClientManager clientManager = null; 

    private ArrayAdapter<String> arrayAdapter = null; 
    private ArrayList<String> labels = null; // list of names of events manly for test) 
    private ArrayList<Event> items = null; //stores events 

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

     clientManager = new AmazonClientManager(this); //CIPEK 
     new GetEventList().execute(); //calling GetEventList from included class below 

     newEvent = (Button) findViewById(R.id.new_event_button); 

     newEvent.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainMenu.this, EventCreationActivity.class); 
       startActivity(intent); 
      } 
     }); 


    } 

    private void setupActivity() { 
     Log.v("MOJEMOJEMOJE", event.getName()); 
    } 

    private class GetEvent extends AsyncTask<Void, Void, Void> { 

     protected Void doInBackground(Void... voids) { 

      event = DynamoDBManager.getEvent(""); //in bracket ID number 
      return null; 
     } 

     protected void onPostExecute(Void result) { 

      setupActivity(); 
     } 
    } 


    private class GetEventList extends AsyncTask<Void, Void, Void> { 

     protected Void doInBackground(Void... inputs) { 

      labels = new ArrayList<String>(); 

      items = DynamoDBManager.getEventList(); 

      for (Event up : items) { 
       labels.add(up.getName()); 
      } 

      return null; 
     } 

     protected void onPostExecute(Void result) { 

      Log.v("Events:", labels.toString()); 
      updateDisplay(); 

     } 
    } 

    public void updateDisplay(){ 
     //Using Event Adapter to display data 
     EventAdapter adapter = new EventAdapter(this, R.layout.item_event, items); 
     setListAdapter(adapter); 

     setOnItemClickListener(new AdapterView.OnItemClickListener() { //HERE IT CANNOT BUILD 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent intent = new Intent(MainMenu.this, EventViewActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 

} 

Vielen Dank im Voraus, John

Hier ist das Fehlerprotokoll:

C:\Users\John\Desktop\trial\cos1\HangApp-0.5\app\src\main\java\com\mysampleapp\MainMenu.java 
Error:(110, 9) error: cannot find symbol method setOnItemClickListener(<anonymous OnItemClickListener>) 
Note: Some input files use or override a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
:app:compileDebugJavaWithJavac FAILED 
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 
> Compilation failed; see the compiler error output for details. 
+0

Kann hilfreich sein, wenn Sie einen Fehler enthalten Sie erhalten – peter

+0

Gibt es einen Fehler? Bcoz ur SetOnItemCliclListener sieht gut aus. Bitte post die Fehlermeldung auch –

Antwort

1

Sie können OverrideonListItemClick für Ereignis-Handle, wenn Sie

in jedem Element Ihrer ListView klicken
public class MainMenu extends ListActivity 
    ... 
    ... 
    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     Toast.makeText(this, "click at " + position,Toast.LENGTH_LONG).show(); 
    } 
} 
+0

Es funktioniert, danke! –

Verwandte Themen