2012-04-24 15 views
13

Ich möchte Listenansicht erstellen. Ich habe den Wert von JSON bekommen. Hier habe ich den Wert von der JSON in ListView, aber ich kann nicht die OnItemclickListener-Methode abrufen. Warum das passiert, weiß ich nicht. Bitte helfen Sie mir meine Codierung wie unten gezeigt.So erstellen Sie Listenansicht onItemclicklistener

Logcat zeigt nichts an.

Danke.

<ListView 
    android:id="@+id/contests_listView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/header" 
    android:focusable="true"> 
</ListView> 

Activity.java

public class Activites_Activity extends CheerfoolznativeActivity { 

private ListView contests_listView; 
private ProgressBar pgb; 
ActivitiesBean bean; 
ArrayList<Object> listActivities; 
ListAdapter adapter; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_listview); 
    setHeader("Activites"); 


    contests_listView = (ListView) findViewById(R.id.contests_listView); 
    pgb = (ProgressBar) findViewById(R.id.contests_progressBar); 
    listActivities = new ArrayList<Object>(); 

    new FetchActivitesTask().execute(); 

} 

public class FetchActivitesTask extends AsyncTask<Void, Void, Void> { 

    int i =0; 
    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     pgb.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 

     String url = "my json URL"; 
     String strResponse = util.makeWebCall(url); 

     try { 

      //my json logic here   
     } 
     catch (JSONException e) { 

      e.printStackTrace(); 

     } 

     return null; 
    } 

    @Override 
    public void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     pgb.setVisibility(View.GONE); 
     displayAdapter(); 
    } 
} 

public void displayAdapter() 
{ 
    adapter = new ListAdapter(this, listActivities); 
    contests_listView.setAdapter(adapter); 
    contests_listView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      // Toast.makeText(getApplicationContext(),"Title => "+items.get(position), Toast.LENGTH_SHORT).show(); 

      System.out.println("=========== Click"); 
      bean = (ActivitiesBean) adapter.getItem(position); 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 
      in1.putExtra("ActivityObject", bean); 
      startActivity(in1); 
     } 
    }); 


} 
} 

ich diesen auch

contests_listView.setItemsCanFocus(true); 
+0

zeigt es Elemente in der Listview? und druckt es ''========== Klicken Sie in den Protokollen, wenn Sie auf ein Element klicken? – waqaslam

+0

haben Sie versucht, SetOnItemSelectedListener? Ich denke, dass es diesen Listener standardmäßig nennen würde? – MikeIsrael

+0

@Waqas, ja ich habe den Wert in der Listenansicht, aber nicht in Logs anzeigen, auch nicht Toast anzeigen. –

Antwort

21

starten:

Diese
contests_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     String item = (String) contests_listView.getItemAtPosition(position); 
     Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show();     
    } 
}); 
+0

Danke, aber es funktioniert nicht, lass es mich wissen, wenn es eine andere Lösung für dieses Problem gibt. –

+0

Aber welchen Fehler bekommen Sie? Wenn logcat keine Ausgabe liefert, versuchen Sie, den ADB über DDMS zurückzusetzen. – GAMA

+1

Ich bekomme 'contests_listView' muss als endgültig deklariert werden? – Dan

0

diesen Code Versuchen verwenden:

protected void onListItemClick(ListView l, View v, int position, long id) { 

super.onListItemClick(l, v, position, id); 

Toast.makeText(this, "message", Toast.LENGTH_LONG).show(); 
} 
+0

Endlich bekomme ich die Lösung, aus Versehen nehme ich die ScrollView in mein Listenelement, Nachher entferne es. –

0

Verwendung:

contests_listView.setOnItemClickListener(new AdapaterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 

      startActivity(in1); 
     } 
    }); 
Verwandte Themen