のために働くどちら:setOnItemSelectedListenerもsetOnClickListener GridViewコントロールには、次られる場合に、GridView
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="0dp"
android:horizontalSpacing="0dp"
android:numColumns="2"
android:stretchMode="columnWidth"
android:verticalSpacing="0dp"
android:fadeScrollbars="false"
android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="afterDescendants"/>
Javaコードは以下の通りです:のみonNothingSelected
gridview = (GridView) findViewById(R.id.gridview);
gridview.setNumColumns(iColumnCount);
gridview.setAdapter(dta);
gridview.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int iPosition, long l) {
utility.logd("gridview", "selected item position:" + iPosition);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
utility.logd("gridview", "nothing selected.");
}
});
gridview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
utility.logd("gridview", "item clicked");
}
});
は()アプリが起動した後に一度と呼ばれます。リモートコントロールでGridViewのフォーカスが変更されたり、アイテムがクリックされたりすると、他のリスナーは呼び出されません。
リスナーを機能させる方法のヒントを教えてください。
GirdViewの他のすべてが期待通りに機能します。
編集:以下は、各グリッドセルのレイアウトである。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_gravity="center"
android:id="@+id/biyee_relativeLayoutRoot">
<ImageButton
android:id="@+id/imageButton"
android:background="@drawable/button_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="snapshot"
android:layout_gravity="center"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_margin="0dp"
android:padding="10dp"
android:src="@drawable/ic_launcher"
android:onClick="onClick_imageButton"/>
<LinearLayout
android:id="@+id/linearLayoutCaption"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black_overlay"
android:orientation="vertical"
android:layout_margin="10dp"
android:padding="5dp">
<TextView
android:id="@+id/textViewName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:text="Name"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textViewModel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Model"
android:textAppearance="?android:attr/textAppearanceSmall"/>
<TextView
android:id="@+id/textViewTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Time"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<TextView
android:id="@+id/textViewPosition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="n"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_margin="15dp"/>
</FrameLayout>
編集(2):ダニエル・ニュージェントのthe tip当たり 、私はカスタムアイテムビューのレイアウトからのImageButtonを除去テストの目的、およびOnItemSelectedListenerが完全に動作するようになりました。したがって、犯人はImageButtonです。クリック可能なオブジェクトがあれば、OnItemSelectedListenerが壊れてしまうようです。
編集(3):
完璧に動作OnItemSelectedListener<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="300dp"
android:orientation="vertical"
android:background="@color/red">
</LinearLayout>
が、OnClickListenerとOnItemClickListenerは私かどうかに関係なく呼び出されることはありません:テストのために、私はカスタム・アイテム・ビューに対して次のレイアウトを使用マウスまたはリモコンを使用して項目をクリックします。
あなたは 'onItemSelectedListener()'の代わりに 'onItemClickListener()'が必要でしょう。 – Opiatefuchs
残念ながら、GridViewにはsetOnItemClickedListenerがありません。 AdapterView.onItemSelectedListenerはありません。 – Hong
GridViewにはonItemClickListener()がありませんか? APIはだまされていますか? https://developer.android.com/guide/topics/ui/layout/gridview.html – Opiatefuchs