2016-06-16 8 views
0

私はこの問題の解決策を説明するさまざまなリンクをたどり、これまでのところ解決策はありませんでした。私のコードに/カスタムアダプターで問題があるのでしょうか?私はOnItemClickListenerに加えて、XMLをクリック可能にしようとしました。私はclickable(個々の要素、線形レイアウト、およびリストビュー自体)のさまざまな設定を試みましたが、このプロパティの帰属は機能しません。リストビューはAndroidにもかかわらずクリックできません:Clickable = "true"

私は、単にリストビューに表示する文字列を作成するトレーラオブジェクトと、YouTube動画のクエリパラメータで完全なリストビューを作成しています。アプリでListItemをクリックすると、youtubeビデオのクエリパラメータ(APIによって提供される)が与えられているので、YouTubeの予告編を開くことになります。

表示されているものへのリンク。私は、下のリストビューを参照しています:ここで http://i.imgur.com/djM6r1G.png

は私のフラグメントのクラスはonCreateViewです:ここでは

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
//....... (other views that function) 
    ListView trailerView = (ListView) rootView.findViewById(R.id.trailer_listview); 
    trailerView.setClickable(true); 
    trailerView.setAdapter(mTrailerAdapter); 
    trailerView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
     Log.d(LOG_TAG, "item click"); 
     Trailer trailer = mTrailerAdapter.getItem(position); 
     final String YT_BASE_URL = "http://www.youtube.com"; 
     final String YT_OPTION_PATH = "watch"; 
     final String YT_API_KEY_PARAM = "v"; 
     Uri builtUri = Uri.parse(YT_BASE_URL).buildUpon() 
      .appendEncodedPath(YT_OPTION_PATH) 
      .appendQueryParameter(YT_API_KEY_PARAM, trailer.getURLkey()) 
      .build(); 
     startActivity(new Intent(Intent.ACTION_VIEW, builtUri)); 
        } 
       }); 
} 

は私のアダプターです:

public class TrailerAdapter extends ArrayAdapter<Trailer> { 
    final String LOG_TAG = TrailerAdapter.class.getSimpleName(); 

    public TrailerAdapter(Activity context, List<Trailer> trailers){ 
     super(context, 0, trailers); 
     //gets created 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 

     Trailer trailer = getItem(position); 

     if(convertView == null){ 
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_trailer, parent, false); 
     } 

     TextView trailerText = (TextView) convertView.findViewById(R.id.trailer_textview); 
     trailerText.setText(trailer.getDisplayString()); 
     return convertView; 
    } 
} 

トレーラークラス:

public class Trailer { 
    private String DisplayString; 
    private String URLkey; 

    public Trailer(String DisplayString, String URLkey){ 
     this.DisplayString = DisplayString; 
     this.URLkey = URLkey; 
    } 

    public String getDisplayString(){ 
     return DisplayString; 
    } 

    public String getURLkey(){ 
     return URLkey; 
    } 
} 

ムービーの予告編のリストビューが作成されますが、 ListViewはどのクリックにも対応していません。しかし、アプリケーションはクリックを登録します(LogCat showは0と1が対応しています)。ここではXMLは同様である。

ListViewコントロール自体:

<LinearLayout> 
.... 
    </ScrollView> 

    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/trailer_listview" 
     android:layout_marginLeft="25dp"> 
    </ListView> 

</LinearLayout> 

ListView項目:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clickable="true"> 

    <ImageView 
     android:layout_width="55dp" 
     android:layout_height="55dp" 
     android:id="@+id/trailer_playbutton" 
     android:src="@drawable/video_play_button" 
     android:layout_gravity="center"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="Trailer 1" 
     android:gravity="center" 
     android:layout_marginLeft="15dp" 
     android:id="@+id/trailer_textview"/> 
</LinearLayout> 

THANKS!

答えて

1

私はあなたに焦点の問題があると思います。ただ置くアンドロイド:フォーカス可能= "false" のアンドロイド:focusableInTouchModeすべてのListView項目(ImageViewのとTextViewの両方)で= "false" を

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:clickable="true"> 

    <ImageView 
     android:layout_width="55dp" 
     android:layout_height="55dp" 
     android:id="@+id/trailer_playbutton" 
     android:src="@drawable/video_play_button" 
     android:layout_gravity="center" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="Trailer 1" 
     android:gravity="center" 
     android:layout_marginLeft="15dp" 
     android:id="@+id/trailer_textview" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     /> 
</LinearLayout> 
+0

が、残念ながら動作しませんでした "だけで、このXMLを試してみてください"。その他のヒント?助けてくれてありがとう、btw。 – SOUser

関連する問題