2016-03-29 6 views
0

My log when the intent actually works Это странный вопрос, который мне очень любопытен. У меня есть список профилей, и когда я нажимаю на конкретный, я хочу просмотреть этот конкретный профиль. Когда я пытаюсь выбрать элемент в списке, он обычно не работает, но иногда он работает (около 1 из 10) по какой-то нечетной причине. Это делает его более неприятным. У кого-нибудь была эта проблема? Спасибо. (Я поставил вопрос, похожий на это, думая, что он вообще не работает, поэтому, пожалуйста, не дублируйте, спасибо).Listview onItemClick не работает должным образом

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

вы отлажен его? –

+1

, пожалуйста, разместите макет вашего адаптера элемента, я сделал пример, который работает с вашим макетом, но мне нужен ваш макет адаптера, чтобы проверить, что у вас там есть. –

+0

Привет, спасибо за ответ, но я использую простой адаптер списка, который находится в xml, который я разместил выше? Или это способ сделать это не правильно? Еще раз спасибо. – user3597639

ответ

0

Вы должны иметь ширину ListView, как Match_parent, если и wrap_content его, он не будет нажать событие за его размера или ширины ребенка. Для чего я думаю, что это может быть проблемой. Если ур Listview в одной строке также содержит дочерние элементы с шириной wrap_content, проблема может возрасти.

+0

Спасибо за ваш ответ, но все равно не работаем должным образом. Намерение работает, когда я нажимаю на просмотр списка случайным образом некоторое время, и я не уверен, почему! Также добавлен мой журнал выше, когда он действительно работает – user3597639

+0

Вы отлаживали и видели, действительно ли он идет на clickListener. Или же напечатайте Log.d («Listview», «Clicked»); только внутри вашего OnItemClickListener –

+0

Когда он действительно работает через некоторое время, он говорит в журнале, что его щелкают! Но обычно абсолютно ничего не происходит. – user3597639

0

Возможно, проблема в xml ??

Я вижу следующие строки

андроид: longClickable = «истинные» андроид: кликабельно = «ложь»

выглядит как 1 из 10 кликов преуспевающих произойдут, когда вы делаете длинный щелчок вместо обычного. Для решения проблемы изменения кликабельным к истинному

андроида: интерактивными = «истинный»

Если я понял вопрос правильно - это должно помочь

+0

Спасибо за ваш ответ, но все равно не работаем плавно, как надо! Спасибо за ваш ответ. Он по-прежнему работает случайным образом, когда я случайно нажимаю на просмотр списка какое-то время? Также добавлен мой журнал выше, когда он действительно работает – user3597639

0

я понял, что был не прав, я не определил мой дочерние объекты и мой корневой элемент правильно. Надеюсь, это поможет кому-то там с аналогичной проблемой. Дочерние элементы должны быть реализованы, как показано ниже:

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

В корневом элементе:

android:clickable="false" 
android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false" 
Смежные вопросы