gpt4 book ai didi

java - VideoView 不在 RecyclerView 中播放视频或音频

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:24 28 4
gpt4 key购买 nike

您好,我正在尝试创建一个视频日志 fragment ,其中包含一个 recyclerview,每个列表项中包含标题、心情和视频。出于某种原因,videoview 甚至没有出现。 videofilePath 保存正确,我已经用 println 语句检查过。我没有收到任何错误,但它完全崩溃了。下一个列表项在视频显示之前开始。

这是我的 ViewHolder 类

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();
}
}

这是我的适配器类

public class JournalRecyclerViewAdapter extends RecyclerView.Adapter<JournalViewHolder> {

私有(private)列表 mJournalEntries; 私有(private)上下文 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();
}

这是我的类,它启动了项目列表和 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;
}

现在这是我的 XML 文件。

<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">

列表项文件

<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"/>

最佳答案

查看此示例代码,了解如何在 RecyclerView 中播放视频 VideoInRecyclerViewExamples

关于java - VideoView 不在 RecyclerView 中播放视频或音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230944/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com