2015-12-11 19 views
5

Merhaba Her liste öğesinde bir başlık, bir ruh hali ve bir video içeren bir geridönüşüm görünümüne sahip bir video günlük parçası oluşturmaya çalışıyorum. Bazı sebeplerden dolayı video görüntüsü bile gösterilmiyor. VideofilePath doğru şekilde kaydediyor ve println ifadeleriyle kontrol ettim. Hata görmüyorum, ama tamamen çöktü. Bir sonraki liste öğesi video görüntülenmeden önce başlar. İşte VideoGörüntüyü veya videoyu oynatmıyor RecyclerView

benim ViewHolder sınıfı

public class JournalViewHolder extends RecyclerView.ViewHolder{ 
private TextView title; 
private TextView mood; 
private VideoView mVideoView; 
MediaController mMediaController; 
Context mContext; 

public JournalViewHolder(View view, Context context){ 
    super(view); 
    mContext = context; 
    title = (TextView)view.findViewById(R.id.JournalTitle); 
    mood = (TextView)view.findViewById(R.id.JournalMood); 
    mVideoView = (VideoView)view.findViewById(R.id.JournalVideo); 
    mMediaController = new MediaController(context); 
} 

public void bind(JournalEntry journalEntry){ 
    title.setText(journalEntry.getTitle()); 
    mood.setText(journalEntry.getMood()); 
    if(journalEntry.getVideoFileName() != null){ 
     Uri uri = Uri.parse(journalEntry.getVideoFileName()); 
     mVideoView.setVideoURI(uri); 
     mVideoView.requestFocus(); 
     mVideoView.setMediaController(mMediaController); 
     mVideoView.setZOrderOnTop(true); 
     mVideoView.start(); 
    } 
} 

} Burada

benim adaptör sınıfı

public class JournalRecyclerViewAdapter extends RecyclerView.Adapter<JournalViewHolder> { 

özel Liste mJournalEntries olduğu; özel İçerik mContext;

public JournalRecyclerViewAdapter(List<JournalEntry> entries, Context context){ 
    mJournalEntries = entries; 
    mContext = context; 
} 

@Override 
public JournalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
    View view = inflater.inflate(R.layout.journal_list_items, parent, false); 
    JournalViewHolder holder = new JournalViewHolder(view, mContext); 

    return holder; 
} 

@Override 
public void onBindViewHolder(JournalViewHolder holder, int position) { 
    JournalEntry entry = mJournalEntries.get(position); 
    holder.bind(entry); 
} 

@Override 
public int getItemCount() { 
    return mJournalEntries.size(); 
} 

} İşte öğelerin listesini ve recyclerview

public class JournalView extends FragmentLoggingLifeCycler { 
private RecyclerView mRecyclerView; 
DataAccess mDataAccess; 
List<JournalEntry> mEntryList; 
public static final String USERNAME_KEY = "username"; 
public static final String PASSWORD_KEY = "password"; 
String password; 
String username; 
User currentUser; 
private Context mContext; 

public JournalView() { 
    // Required empty public constructor 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    mContext = activity.getApplicationContext(); 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    mContext = context; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_journal_view, container, false); 
    Bundle data = getArguments(); 
    username = data.getString(USERNAME_KEY); 
    password = data.getString(PASSWORD_KEY); 
    LinearLayoutManager manager = new LinearLayoutManager(getActivity()); 
    mDataAccess = DataAccess.getDataAccess(container.getContext()); 
    currentUser = mDataAccess.getLoginUser(username, password); 


    mEntryList = mDataAccess.getAllJournals(); 
     //mDataAccess.mDatabase.delete(Scheme.Journal.NAME, null, null); 
//  mEntryList = trimList(mEntryList, currentUser.getUsername()); 
//  for(int counter = 0; counter < mEntryList.size(); counter++){ 
//   System.out.println(mEntryList.get(counter).getTitle()); 
//  } 
     mRecyclerView = (RecyclerView)view.findViewById(R.id.JournalList); 
     mRecyclerView.setLayoutManager(manager); 
     mRecyclerView.setAdapter(new JournalRecyclerViewAdapter(mEntryList, mContext)); 
     return view; 
    } 

private static List<JournalEntry> trimList(List<JournalEntry> entries, String username){ 
    List<JournalEntry> returnedList = new ArrayList<>(); 

    for(int i = 0; i< returnedList.size(); i++){ 
     System.out.println(entries.get(i).getUsername()+ ", " +username); 
     if(entries.get(i).getUsername().equals(username)){ 
      returnedList.add(entries.get(i)); 
     } 
    } 
    return returnedList; 
} 

}

ve şimdi burada benim XML dosyalarıdır başlatır benim sınıftır.

<android.support.v7.widget.RecyclerView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_weight="1" 
android:id="@+id/JournalList"> 

Liste Ürün dosyaları

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_weight="2"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="2" 
     android:text="@string/Title"/> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:id="@+id/JournalTitle"/> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="2" 
     android:text="@string/Mood"/> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:id="@+id/JournalMood"/> 

</LinearLayout> 
<VideoView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:id="@+id/JournalVideo" 
    android:visibility="visible"/> 

cevap

1

kontrol dışarı Bir kitaplık geliştiriyorum RecyclerView iç VideoInRecyclerViewExamples

+0

Ancak Videolar ve RecyclerView için verilen yanıtlar gerçekten çok azdır, ayrıca Uygulama çökmelerine yukarı veya aşağı kaydırmaya çalıştığımda, bir RecyclerView uygulamasında video yükleme sorunu yaşıyorum ve bu, –

+0

Null işaretçisini FullScreenVideoLayout olduğunu biliyor mu? Ne kullanıyorum –

+0

Ben Github üzerinde projeni gördüm, ama bazı ekran görüntüleri ve bazı belgeleri @ atabouraya deneyebilirsiniz. Teşekkürler –

0

oynarken video var nasıl bu örnek kod size yardımcı olabilecek OneItem adlı .
https://github.com/tbrand/OneItem

#selectItemAt(int position) yılında (örneğin MediaPlayer veya ExoPlayer gibi) keyfi VideoView ile videoyu oynatmaya başlayın.
#UnSelectItemAt(int position)'da videoyu oynatmayı durdurun ve bırakın.