2016-03-29 48 views
0

My log when the intent actually works das ist eine komische Frage, die mich sehr interessiert. Ich habe eine Liste von Profilen und wenn ich auf ein bestimmtes Profil klicke, möchte ich dieses Profil selbst anzeigen. Wenn ich versuche, ein Element in der Listenansicht auszuwählen, funktioniert es im Allgemeinen nicht, aber es funktioniert manchmal (etwa 1 zu 10) aus irgendeinem seltsamen Grund. Was es frustrierender macht. Hat jemand jemals dieses Problem gehabt? Vielen Dank. (Ich habe eine ähnliche Frage gestellt, in der ich dachte, dass es gar nicht funktioniert, also bitte nicht duplizieren, danke).Listview onItemClick funktioniert nicht wie erwartet

public class CowListView extends ListActivity { 

    RegisterCowAdapter cowAdapter; 
    private DataBaseHelper databaseHelper; 
    public ListView listView; 
    TextView student_Id; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cow_list_item); 
     cowAdapter = new RegisterCowAdapter(this); 

     cowAdapter.open(); 
     updateCowUI(); 
     listView = (ListView) findViewById(android.R.id.list); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
            int position, long id) { 
       student_Id = (TextView) view.findViewById(R.id.cowtagnolist); 
       String studentId = student_Id.getText().toString(); 
       Intent i = new Intent(view.getContext(), CowProfile.class); 
       Toast.makeText(CowListView.this, "Clicked", Toast.LENGTH_SHORT).show(); 
       i.putExtra("student_Id", Integer.parseInt(studentId)); 
       Log.d("StartingCow", studentId); 
       startActivityForResult(i, 0); 

      } 

     }); 

XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:descendantFocusability="blocksDescendants" 
    android:longClickable="true" 
    android:focusableInTouchMode="false" 
    android:clickable="false" 
    android:focusable="false"> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </ListView> 

    <TextView 
     android:id="@+id/cowtagnolist" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="@color/black" 
     android:clickable="true"> 
    </TextView> 

    <TextView 
     android:id="@+id/cowdoblist" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"  
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="17dp" 
     android:clickable="true" 
     android:textColor="@color/black">  
    </TextView> 
</LinearLayout> 
+1

hast du es debuggt? –

+1

posten Sie bitte das Layout Ihrer Artikel Adapter, ich habe ein Beispiel, das mit Ihrem Layout arbeiten, aber ich brauche Ihr Adapter-Layout, um zu überprüfen, was Sie dort haben. –

+0

Hallo, danke für die Antwort, aber ich benutze einen einfachen Listenadapter, der in der XML, die ich oben gepostet habe, ist? Oder ist diese Methode nicht korrekt? Danke noch einmal. – user3597639

Antwort

0

Sie sollten Listenansicht Breite wie Match_parent halten, wenn u es wrap_content, wird es Ereignis bekommen nicht über seine Kindergröße oder Breite klicken. Für was ich denke, das könnte das Problem sein. Wenn auch Ihr einreihiges Listview-Layout untergeordnete Ansichten mit der Breite wrap_content enthält, könnte das Problem zunehmen.

+0

Vielen Dank für Ihre Antwort, aber immer noch nicht so wie es sollte. Der Intent funktioniert, wenn ich eine Weile auf die Listenansicht drücke und mir nicht sicher ist, warum! Habe auch mein Protokoll oben hinzugefügt, wenn es tatsächlich funktioniert – user3597639

+0

Haben Sie debuggen und sehen, ob es tatsächlich auf dem ClickListener geht. Oder drucken Sie ein Log.d ("Listview", "Clicked"); nur in Ihrem OnItemClickListener –

+0

Wenn es nach einer Weile tatsächlich funktioniert, sagt es in dem Protokoll, dass es geklickt wird! Aber normalerweise passiert absolut nichts. – user3597639

0

vielleicht ist das Problem in Xml ??

Ich sehe die nächsten Saiten

android: longClickable = "true" android: anklickbare = "false"

wie 1 von 10 erfolgreichen Klicks sieht passieren, wenn Sie einen langen Klick stattdessen eine übliche machen. Um das Problem zu ändern klickbare auf true

android zu lösen: anklickbare = „true“

Wenn ich die Frage richtig verstanden - es sollte helfen

+0

Vielen Dank für Ihre Antwort, aber immer noch nicht reibungslos wie es sollte! Danke für deine Antwort. Es funktioniert immer noch zufällig, wenn ich für eine Weile auf die Listenansicht zufällig drücke? Habe auch mein Protokoll oben hinzugefügt, wenn es tatsächlich funktioniert – user3597639

0

ich herausgefunden, was falsch war, habe definiere ich nicht meine Untergeordnete Objekte und mein Stammelement korrekt. Hoffe das hilft jedem da draußen mit einem ähnlichen Problem. Die untergeordneten Elemente umgesetzt werden sollte, wie unten gesehen:

android:clickable="false" 
android:focusable="false" 
android:focusableInTouchMode="false" 

Im Stammelement:

android:clickable="false" 
android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false"