나는이 문제에 대한 해결책을 설명하는 여러 링크를 따라 왔으며 지금까지 해결되지 않았거나 내 경우에는 적용 할 수 없다. 내 코드/사용자 지정 어댑터에 문제가 있는지 궁금하네요? OnItemClickListener 외에도 XML을 클릭 가능하게 만들려고 시도했습니다. 여러 가지 클릭 가능한 구성 (개별 요소, 선형 레이아웃 및 목록보기 자체)을 시도했지만이 속성의 속성이 작동하지 않습니다.안드로이드에도 불구하고 ListView unclickable : Clickable = "true"
나는 ListView에 표시하기위한 문자열을 만드는 ListView 객체와 YouTube 동영상 용 쿼리 매개 변수를 만드는 ListView를 만들고 있습니다. 앱에서 ListItem을 클릭하면 API에서 제공 한 YouTube 동영상에 대한 검색어 매개 변수가있는 YouTube에서 예고편을 열어 볼 수 있습니다.
표시되는 항목에 대한 링크. 다음 http://i.imgur.com/djM6r1G.png
내 조각 클래스 onCreateView입니다 : 내가 바닥 ListView를 말하는 겁니다
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;
}
}
다음
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));
}
});
}
나의 어댑터입니다
영화에 대한 예고편의 ListView가 만들어 지지만 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>
감사합니다!
불행히도 작동하지 않았다. 다른 팁? 조언 주셔서 감사합니다, btw. – SOUser