2016-07-04 11 views
1

Ich versuche, ein Basis-OnClick-Ereignis an eine Liste der Kontakte vom Gerät anzufügen. Die Liste der Kontakte wird korrekt generiert. Eine Zusammenfassung meines Codes ist wie folgt:Kontakte LoaderManager und AdapterView OnClick

public class Contacts extends AppCompatActivity implements 
LoaderManager.LoaderCallbacks<Cursor>, 
AdapterView.OnItemClickListener 
{ 
... 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.contacts_list_view); 

     //initialise loader 
     getSupportLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this); 

     mContactsList = (ListView) findViewById(android.R.id.list); 
     //Gets a CursorAdapter 
     mCursorAdapter = new SimpleCursorAdapter(
      this, 
      R.layout.contacts_list_item, 
      null, 
      FROM_COLUMNS, TO_IDS, 
      0); 
      //Sets the adapter for the ListView 
      mContactsList.setAdapter(mCursorAdapter); 

     } 
    } 

     //Followed by all the loader functions 

     public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {} 
     ... 
     public void onItemClick (AdapterView<?> parent, View view, int position, long id){ 
      Toast.makeText(this, 
      "hello world", 
      Toast.LENGTH_SHORT).show(); 
     } 

Mein onItemClick funktioniert jedoch nicht. Muss ich zuerst eine Instanz von OnItemClickListener erstellen. Ich habe versucht, dies innerhalb der onCreate-Methode und außerhalb zu tun und beide arbeiten nicht.

Anschließend haben versucht, ich folgendes: In meinem onCreate Methode

mContactsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getApplicationContext(), 
        "hello world", 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

Wie stellen Sie die clicklistener auf Ihrer Liste? Sie müssen wahrscheinlich während onCreate tun: listView.setOnItemClickListener (this); – W0rmH0le

+0

hi, der Fehler, den ich dann erhalte, ist die Klasse 'Kontakte' muss als abstrakte Methode deklariert werden OnitemClick in OnItemClickListener –

+0

Wenn Sie den Listener wie folgt setzen "mContactsList.setOnItemClickListener (new AdapterView.OnItemClickListener()", sollten Sie "implements AdapterView .OnItemClickListener "aus Ihrer Klassendeklaration – W0rmH0le

Antwort

0
public class Contacts extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor>, 

    public void onCreate(Bundle savedInstanceState) { 

     // Set screen content 
     setContentView(R.layout.main_screen_activity_layout); 

     // Find the list view 
     ListView mContactsList = findViewById(R.id.ID_OF_YOUR_LISTVIEW); 

     // Set the click listener 
     mContactsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getApplicationContext(), 
         "hello world", 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     // Create your adapter and set the adapter to your ListView via mContactsList.setAdapter(); 
    } 
+0

es funktioniert, aber es nicht eingerichtet wurde Arbeit ... es hat nicht nichts gemacht, als ich auf die Liste geklickt habe. Ich werde den zusätzlichen Code meiner onCreate-Methode posten –