gpt4 book ai didi

java - 视频 View 正在替换它们在 GridView 中的位置,有时 1 个视频 View 在 GridView 中重复

转载 作者:行者123 更新时间:2023-11-30 01:42:17 26 4
gpt4 key购买 nike

基本上我有一个视频列表,我想在 GridView 中显示所有视频并让它们重复播放,例如,如果 1 个视频播放完,它应该重新开始。我已经在我的适配器中进行了管理给出的代码..现在问题来了我面临的问题是滚动 GridView GridView 的项目( GridView 的单个项目由视频 View 和删除按钮组成)有时彼此交换或有时单个视频 View 在 GridView 中重复。它还有另一个异常行为,即网格的最后一项有时会粘在屏幕底部。我只是不明白这里发生了什么。

public class MyGalleryAdapterMain extends BaseAdapter {

private Activity mActivity;
private LayoutInflater mLayoutInflater;
private ArrayList<File> mDatalist;

public MyGalleryAdapterMain(Activity mActivity, ArrayList<File> mDatalist) {
this.mActivity = mActivity;
this.mDatalist = mDatalist;

mLayoutInflater=(LayoutInflater)mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

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

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

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



@Override
public View getView(int position, View convertView, ViewGroup parent) {

View v=convertView;
final File mData=mDatalist.get(position);
final Holder mHolder;

if(convertView==null){


v=mLayoutInflater.inflate(R.layout.grid_item,null);
mHolder =new Holder();

mHolder.mDeleteButton=(Button)v.findViewById(R.id.deleteButton);

mHolder.mVideoView=(VideoView)v.findViewById(R.id.videoImageView);
mHolder.mVideoNameTextView=(TextView)v.findViewById(R.id.videoNameTextView);

v.setTag(mHolder);

}else

mHolder=(Holder)v.getTag();

/* Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(mData.getAbsolutePath(), MediaStore.Video.Thumbnails.MINI_KIND);
mHolder.mImageView.setImageBitmap(thumbnail);*/

if(mHolder.mVideoView.getCurrentPosition()==0) {
mHolder.mVideoView.setVideoPath(mData.getAbsolutePath());
final Holder mTempHolder=mHolder;

mHolder.mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {

mTempHolder.mVideoView.start();


}
});

mHolder.mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {

mTempHolder.mVideoView.start();

}
});
}







mHolder.mDeleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

mData.delete();
mDatalist.remove(mData);
notifyDataSetChanged();
}
});

return v;
}



public class Holder{

private VideoView mVideoView;
private TextView mVideoNameTextView;
private Button mDeleteButton;

}


}

最佳答案

我认为这是因为您正在使用的回收视频 View 在重复使用时没有被告知要重置自己,因此它们只会播放之前播放的相同视频。您应该停止或释放(我现在不看 android 文档),然后重新加载视频 View 以供重复使用。我没有看到您在发布的代码中这样做。

关于java - 视频 View 正在替换它们在 GridView 中的位置,有时 1 个视频 View 在 GridView 中重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327136/

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