2013-03-25 2 views
-1

У меня такая же проблема, как этот предыдущий пост: ListFragment OnListItemClick not being calledListFragment OnListItemClick игнорируя меня, Не фокусируемые просмотры

но его решение не работает для меня ... Мой материал не фокусируемый и до сих пор нет клик не получил в 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> 

Что теперь делать?

любая помощь будет глубоко благодарна!

ответ

2

набор LinearLayout

android:clickable="false" 
+0

хорошо продумана ... спасибо человеку – Nhano

+0

это решение работает для меня, но я не знаю причину. Вы можете объяснить, пожалуйста?. – kiduxa

+0

Это точное решение, которое я искал. Причина в том, что если для параметра 'android: clickable' установлено значение true, линейный макет каждого элемента списка получил клик, а не список. Таким образом, onItemClick List не работает! –

Смежные вопросы