-1

この前の投稿と同じ問題があります: ListFragmentOnListItemClickが呼び出されていません

しかし、その解決策は私にはうまくいきません...私のものは焦点を合わせることができず、それでもListFragmentにクリックイベントを受信しません。私がonclicklistenersをアイテムに置くと、彼らはイベントを受け取るので、奇妙です

私が説明します。私はこのListFragmentを手に入れました:

public class VideosListFragment extends ListFragment {

   @Override
   public void onListItemClick(ListView l, View v, int position, long id) {
       Video item = (Video) getListAdapter().getItem(position);
       DetailFragment fragment = (DetailFragment) getFragmentManager()
            .findFragmentById(R.id.youtube_fragment);
       if (fragment != null && fragment.isInLayout()) {
        MainActivity videoParent = (MainActivity)getActivity();
        videoParent.setVideo(item);
        fragment.initialize(DeveloperKey.DEVELOPER_KEY, videoParent);
       } else {
        Intent intent = new Intent(getActivity().getApplicationContext(),
                VideoPlayerActivity.class);
        intent.putExtra(Video.VIDEO_ID, item.getVideoId());
        startActivity(intent);
       }
   }
}

そしてその中に私はこのListAdapterを入れました:

public class VideosAdapter extends BaseAdapter implements ListAdapter{
    // The list of videos to display
    List<Video> videos;
    // An inflator to use when creating rows
    private LayoutInflater mInflater;
    private Context context;

    /**
     * @param context this is the context that the list will be shown in - used to create new list rows
     * @param videos this is a list of videos to display
     */
    public VideosAdapter(Context _context, List<Video> _videos) {
        this.videos = _videos;
        this.context = _context;
        this.mInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return videos.size();
    }

    @Override
    public Object getItem(int position) {
        return videos.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = mInflater.inflate(R.layout.list_item_user_video, null);
        }
        UrlImageView thumb = (UrlImageView) convertView.findViewById(R.id.userVideoThumbImageView);

        TextView title = (TextView) convertView.findViewById(R.id.userVideoTitleTextView); 
        Video video = videos.get(position);
        // Set the image for the list item
        thumb.setImageDrawable(video.getThumbUrl());
        // Set the title for the list item
        title.setText(video.getTitle());

//      Bundle extra = new Bundle();
//      extra.putString(Video.VIDEO_ID, video.getVideoId());
//      convertView.setOnClickListener(new OnClickListenerExtra(context, VideoPlayerActivity.class, extra));

        return convertView;
    }
}

最後にコメントされた各アイテムのインテントがあります。存在する場合は機能しますが、機能しない場合、フラグメントはクリックを受信しません。

アイテムのレイアウトも投稿しているので、フォーカスが合っていないことがわかります。これは以前の解決策でした...

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

    <com.vivoenmimundo.sc2hotsepicreplays.ui.widget.UrlImageView
        android:id="@+id/userVideoThumbImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        android:contentDescription="YouTube video thumbnail"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/userVideoTitleTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:focusable="false"
        android:text="Video Title Not Found" />

</LinearLayout>

私は今何ができますか?

どんな助けでも深く感謝します!

4

1 に答える 1

3

LinearLayoutを設定します

android:clickable="false"
于 2013-03-26T08:58:09.827 に答える