2017-10-09 106 views
0

enter image description here我想在单独的水平视图中显示图像和视频,只有一个回收视图适配器。我有两个按钮(图像和视频)。当我捕捉照片时,我必须在一个回收视图中显示,如视频。录制视频后,我想存储在另一个ScrollView中,但我想使用相同的回收适配器。如何在recyclerview的不同视图中显示视频和图像?

if (caseSheetDao.getDataTypesheet().equals("camera")) { 

    holder.mCamera.setVisibility(View.VISIBLE); 
    holder.mVideoView.setVisibility(View.GONE); 
    holder.mVideoplay.setVisibility(View.GONE); 
    holder.mFramecase.setVisibility(View.GONE); 
    holder.mAudiolayout.setVisibility(View.GONE); 

    holder.mCamera.setImageURI(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + caseSheetDao.getUrisheet())); 
    Log.i(TAG,"Image Path : "+Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + caseSheetDao.getUrisheet()); 
} 

if (caseSheetDao.getDataTypesheet().equals("video")) { 

    holder.mCamera.setVisibility(View.GONE); 
    holder.mAudiolayout.setVisibility(View.GONE); 
    holder.mFramecase.setVisibility(View.VISIBLE); 
    holder.mVideoView.setVisibility(View.VISIBLE); 
    holder.mVideoplay.setVisibility(View.VISIBLE); 

// Glide.with(context) 
//  .load(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + caseSheetDao.getUrisheet()) // or URI/path 
//  .into(holder.mVideoView); 

    Log.i(TAG," Video Path : "+Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + caseSheetDao.getUrisheet()); 
    holder.mVideoplay.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(); 
      intent.setAction(android.content.Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + caseSheetDao.getUrisheet()), "video/*"); 
      context.startActivity(intent); 
     } 
    }); 

} 
+0

编辑您的问题补充你如何希望它看起来像一个屏幕截图。 – rupinderjeet

+0

如果它是应该在第一个框滚动视图中的图像,并且如果它是应该在第二个框中的视频 – Robot

回答

0

像这样:

public class Content { 
    boolean isVideo; 

    public Content(boolean isVideo) { 
     this.isVideo = isVideo; 
    } 

    public boolean isVideo() { 
     return isVideo; 
    } 

    public void setVideo(boolean video) { 
     isVideo = video; 
    } 
} 



public class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ 

    private static final int IS_VIDEO = 0; 
    private static final int IS_IMAGE = 1; 
    private List<Content> items; 

    public CustomAdapter(List<Content> items) { 
     this.items = items; 
    } 

    public void refresh(List<Content> items) { 
     this.items = items; 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getItemViewType(int position) { 
     if(items.get(position).isVideo){ 
      return IS_VIDEO; 
     }else{ 
      return IS_IMAGE; 
     } 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     if(viewType == IS_VIDEO){ 
      return new VideoViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.viewholder_video, parent, false)); 
     } 
     else { 
      return new ImageViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.viewholder_image, parent, false)); 
     } 
    } 



    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     if(holder instanceof ImageViewHolder){ 
      onBindImageViewHolder((ImageViewHolder) holder, position); 
     } 
     else{ 
      onBindVideoViewHolder((VideoViewHolder) holder, position); 
     } 
    } 

    private void onBindImageViewHolder(ImageViewHolder holder, int position) { 

    } 

    private void onBindVideoViewHolder(VideoViewHolder holder, int position) { 

    } 

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


    public class ImageViewHolder extends RecyclerView.ViewHolder { 

     public ImageViewHolder(View itemView) { 
      super(itemView); 
     } 

    } 

    public class VideoViewHolder extends RecyclerView.ViewHolder { 

     public VideoViewHolder(View itemView) { 
      super(itemView); 
     } 

    } 
} 
+0

请查看我的图像 – Robot

+0

与上述内容完全相同,但使用第三个ViewHolder:AudioViewHolder。您可以为您在回收站视图中创建的每个ViewHolder执行任何操作。无论如何,我不确定Recyclerview是你需要的.. – sokarcreative

相关问题