2

ListViewのOnItemCliskListenerに愚かな問題があります。 XMLは非常に単純ですが、複雑さを改善した後は、OnItemCliskListenerが機能しなくなります。TabActivity内のListViewでOnItemClickListenerを使用する

つまり、私はTextViewだけでListViewを持っています。しかし、ListViewを他のTextView、Icon、CheckBoxとのより複雑なリストにすると、ClickListenerは機能しなくなります。

XMLだけを変更して同じコードを実行すると、OnItemCliskListenerが機能しなくなります。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:orientation="vertical" 
    android:layout_height="fill_parent"> 
    <TextView android:id="@+id/title" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:layout_toLeftOf="@+id/appCheck" 
     android:layout_toRightOf="@+id/appIcon" 
     android:textAppearance="?android:attr/textAppearanceLarge"> 
    </TextView> 
</RelativeLayout> 

に動作していないLISTVIEW:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:orientation="vertical" 
    android:layout_height="fill_parent"> 
    <ImageView android:src="@drawable/icon" android:id="@+id/appIcon" 
     android:layout_width="30px" android:layout_height="40px"></ImageView> 
    <CheckBox android:id="@+id/appCheck" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_alignParentRight="true"></CheckBox> 
    <TextView android:id="@+id/title" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:layout_toLeftOf="@+id/appCheck" 
     android:layout_toRightOf="@+id/appIcon" 
     android:textAppearance="?android:attr/textAppearanceLarge"> 
    </TextView> 
    <TextView android:id="@+id/subtitle" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:layout_toLeftOf="@+id/appCheck" 
     android:layout_toRightOf="@+id/appIcon" android:layout_below="@+id/title" 
     android:textAppearance="?android:attr/textAppearanceSmall"> 
    </TextView> 
</RelativeLayout> 

MY Javaアクティビティ:

public class MyTabsActivity extends TabActivity implements OnTabChangeListener { 
private static final String LIST3_TAB_TAG = "List3"; 

private RelativeLayout layoutTab3;  
private MyArrayAdapter adapterListViewTab3; 
private TabHost tabHost; 
... 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      tabHost = getTabHost(); 
      tabHost.setOnTabChangedListener(this); 
... 
... 
// ----------------- BUILD TAB3 
      // That is my Tab of Running App 
      layoutTab3 = (RelativeLayout) findViewById(R.id.running_app_relative_layout); 
      // Fill my ListView of Running App 
      ListView runningAppList = (ListView) findViewById(R.id.running_app_listview); 
      List<String> list3Strings = new ArrayList<String>(); 
      list3Strings.add("Item 1"); 
      list3Strings.add("Item 2"); 
      list3Strings.add("Item 3"); 
      list3Strings.add("Item 

      adapterListViewTab3 = new MyArrayAdapter(this, android.R.layout.simple_list_item_1, list3Strings); 
      runningAppList.setAdapter(adapterListViewTab3); 
      // ???????????????????????????????????????????????????????????????????????????????????????????? 
      // >>>>>>>>>>>> THIS OnItemClickAdapter DOESN'T WORK !!!!! WHY ???????? 
      runningAppList.setOnItemClickListener(new OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        Toast.makeText(MyTabsActivity.this, "EUREKA", Toast.LENGTH_SHORT).show(); 
       } 
      }); 

... 
// add Tab3 
      TabSpec tab3 = tabHost.newTabSpec(LIST3_TAB_TAG).setIndicator(LIST3_TAB_TAG).setContent(new TabContentFactory() { 
       public View createTabContent(String arg0) { 
        return layoutTab3; 
       } 
      }); 
      tabHost.addTab(tab3); 
      layoutTab3.setVisibility(View.INVISIBLE); 
... 
} 
} 

MY R.あなたは私

にWORKINGリストビューを助けることができれば、私はむしろ感謝されますlayout.main:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:orientation="vertical" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <TabWidget android:id="@android:id/tabs" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" /> 
     <FrameLayout android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" android:layout_height="fill_parent"> 

      <ListView android:id="@+id/list1" android:layout_width="fill_parent" 
       android:layout_height="wrap_content" android:layout_weight="1"> 
      </ListView> 

      <ListView android:id="@+id/list2" android:layout_width="fill_parent" 
       android:layout_height="wrap_content" android:layout_weight="1"> 
      </ListView> 

      <RelativeLayout android:id="@+id/running_app_relative_layout" 
       android:orientation="vertical" android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

       <LinearLayout android:orientation="horizontal" 
        android:id="@+id/coco" android:layout_alignParentTop="true" 
        android:layout_width="fill_parent" android:layout_height="fill_parent"> 
        <ListView android:id="@+id/running_app_listview" 
         android:scrollbars="vertical" android:layout_width="fill_parent" 
         android:layout_height="wrap_content" android:layout_gravity="fill_vertical" 
         android:layout_alignParentTop="true"></ListView> 
       </LinearLayout> 
      </RelativeLayout> 

     </FrameLayout> 
    </LinearLayout> 
</TabHost> 

答えて

1

カスタムListViewにフォーカス可能な要素が含まれていると、onListItemClickが機能しないことがわかりました(これは予想される動作だと思います)。だから私はちょうどカスタムビューからフォーカスを削除し、それはトリックでした。言い換えれば、私は私のビューには、次のコマンドを追加しました:

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

は完全な説明はここで下盛です:How to fire onListItemClick in Listactivity with buttons in list?

関連する問題