我有一个视频流应用程序,可以与ExoPlayer2一起很好地工作,但是我的用户现在希望我添加一个在外部播放器中播放视频的选项,所以我试图写一个意图,但似乎不能。
必须从中获取链接的我的适配器:
public class ServerApater extends RecyclerView.Adapter<ServerApater.OriginalViewHolder> {
private List<CommonModels> items = new ArrayList<>();
private Context ctx;
private ServerApater.OnItemClickListener mOnItemClickListener;
private ServerApater.OriginalViewHolder viewHolder;
public interface OnItemClickListener {
void onItemClick(View view, CommonModels obj, int position, OriginalViewHolder holder);
}
public void setOnItemClickListener(ServerApater.OnItemClickListener mItemClickListener) {
this.mOnItemClickListener = mItemClickListener;
}
public ServerApater(Context context, List<CommonModels> items) {
this.items = items;
ctx = context;
}
@Override
public ServerApater.OriginalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ServerApater.OriginalViewHolder vh;
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_server, parent, false);
vh = new ServerApater.OriginalViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ServerApater.OriginalViewHolder holder, final int position) {
CommonModels obj = items.get(position);
holder.name.setText(obj.getTitle());
if (position==0){
viewHolder=holder;
new DetailsActivity().iniMoviePlayer(obj.getStremURL(),obj.getServerType(),ctx);
holder.name.setTextColor(ctx.getResources().getColor(R.color.colorPrimary));
}
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, items.get(position), position,holder);
}
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public class OriginalViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public CardView cardView;
public OriginalViewHolder(View v) {
super(v);
name = v.findViewById(R.id.name);
cardView=v.findViewById(R.id.card_view_home);
}
}
public void chanColor(ServerApater.OriginalViewHolder holder,int pos){
if (pos!=0){
viewHolder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
if (holder!=null){
holder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
}
}
现在的问题是,我不知道该怎么办。我的意图中的“ obj.getStremURL()”说“无法解析符号'obj'”
感谢您的帮助。
编辑:
我的活动
public class DetailsActivity extends AppCompatActivity {
int i = 0;
private TextView tvName,tvDirector,tvRelease,tvCast,tvDes,tvGenre,tvRelated;
private RecyclerView rvDirector,rvServer,rvRelated,rvComment;
public static RelativeLayout lPlay;
private EpisodeAdapter episodeAdapter;
private HomePageAdapter relatedAdapter;
private LiveTvHomeAdapter relatedTvAdapter;
public static LinearLayout llBottom,llBottomParent,llcomment;
private SwipeRefreshLayout swipeRefreshLayout;
private String type="",id="";
private ImageView imgAddFav;
public static ImageView imgBack;
public static ImageView imgPlayer;
private String V_URL = "";
public static WebView webView;
public static ProgressBar progressBar;
private boolean isFav = false;
private ShimmerFrameLayout shimmerFrameLayout;
private Button btnComment;
private EditText etComment;
private CommentsAdapter commentsAdapter;
private String commentURl;
private AdView adView;
private InterstitialAd mInterstitialAd;
public static SimpleExoPlayer player;
public static PlayerView simpleExoPlayerView;
public static SubtitleView subtitleView;
public static ImageView imgFull;
public static ImageView imgfit;
public static boolean isPlaying,isFullScr;
public static View playerLayout;
private int playerHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
imgPlayer=findViewById(R.id.img_player);
shimmerFrameLayout.startShimmer();
playerHeight = lPlay.getLayoutParams().height;
progressBar.setMax(100); // 100 maximum value for the progress value
progressBar.setProgress(50);
imgBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
imgPlayer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(obj.getStremURL()), "video/*");
startActivity(Intent.createChooser(intent, "Complete action using"));
}
});
type = getIntent().getStringExtra("vType");
id = getIntent().getStringExtra("id");
final SharedPreferences preferences=getSharedPreferences("user",MODE_PRIVATE);
if (preferences.getBoolean("status",false)){
imgAddFav.setVisibility(VISIBLE);
}else {
imgAddFav.setVisibility(GONE);
}
imgFull.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFullScr){
isFullScr=false;
showSystemUI();
llBottomParent.setVisibility(VISIBLE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
lPlay.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, playerHeight));
imgfit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);
}
});
}else {
hideSystemUI();
isFullScr=true;
llBottomParent.setVisibility(GONE);
lPlay.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
imgfit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i++;
Runnable r = new Runnable() {
@Override
public void run() {
i = 0;
}
};
if (i == 1) {
//Single click
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
} else if (i == 2) {
//Double click
i = 0;
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_ZOOM);
} else if (i == 3) {
// Triple Click
i = 0;
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIT);
} else if (i == 4) {
// Fourth Click
i = 0;
simpleExoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FILL);
}
}
});
}
}
});
imgAddFav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = new ApiResources().getAddFav()+"&&user_id="+preferences.getString("id","0")+"&&videos_id="+id;
if (isFav){
String removeURL = new ApiResources().getRemoveFav()+"&&user_id="+preferences.getString("id","0")+"&&videos_id="+id;
removeFromFav(removeURL);
}else {
addToFav(url);
}
}
});
if (!isNetworkAvailable()){
new ToastMsg(DetailsActivity.this).toastIconError(getString(R.string.no_internet));
}
initGetData();
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
initGetData();
}
});
}
private void initGetData(){
if (!type.equals("tv")){
//----related rv----------
relatedAdapter=new HomePageAdapter(this,listRelated);
rvRelated.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
rvRelated.setHasFixedSize(true);
rvRelated.setAdapter(relatedAdapter);
if (type.equals("tvseries")){
rvRelated.removeAllViews();
listRelated.clear();
rvServer.removeAllViews();
listDirector.clear();
listEpisode.clear();
episodeAdapter=new EpisodeAdapter(this,listDirector);
rvServer.setLayoutManager(new LinearLayoutManager(this));
rvServer.setHasFixedSize(true);
rvServer.setAdapter(episodeAdapter);
getSeriesData(type,id);
}else {
rvServer.removeAllViews();
listDirector.clear();
rvRelated.removeAllViews();
listRelated.clear();
serverApater=new ServerApater(this,listDirector);
rvServer.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
rvServer.setHasFixedSize(true);
rvServer.setAdapter(serverApater);
getData(type,id);
final ServerApater.OriginalViewHolder[] viewHolder = {null};
serverApater.setOnItemClickListener(new ServerApater.OnItemClickListener() {
@Override
public void onItemClick(View view, CommonModels obj, int position, ServerApater.OriginalViewHolder holder) {
iniMoviePlayer(obj.getStremURL(),obj.getServerType(),DetailsActivity.this);
serverApater.chanColor(viewHolder[0],position);
holder.name.setTextColor(getResources().getColor(R.color.colorPrimary));
viewHolder[0] =holder;
}
});
}
SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);
String url = new ApiResources().getFavStatusURl()+"&&user_id="+sharedPreferences.getString("id","0")+"&&videos_id="+id;
if (sharedPreferences.getBoolean("status",false)){
getFavStatus(url);
}
}else {
llcomment.setVisibility(GONE);
tvRelated.setText("All TV :");
rvServer.removeAllViews();
listDirector.clear();
rvRelated.removeAllViews();
listRelated.clear();
//----related rv----------
relatedTvAdapter=new LiveTvHomeAdapter(this,listRelated);
rvRelated.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
rvRelated.setHasFixedSize(true);
rvRelated.setAdapter(relatedTvAdapter);
imgAddFav.setVisibility(GONE);
serverApater=new ServerApater(this,listDirector);
rvServer.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));
rvServer.setHasFixedSize(true);
rvServer.setAdapter(serverApater);
getTvData(type,id);
llBottom.setVisibility(GONE);
final ServerApater.OriginalViewHolder[] viewHolder = {null};
serverApater.setOnItemClickListener(new ServerApater.OnItemClickListener() {
@Override
public void onItemClick(View view, CommonModels obj, int position, ServerApater.OriginalViewHolder holder) {
iniMoviePlayer(obj.getStremURL(),obj.getServerType(),DetailsActivity.this);
serverApater.chanColor(viewHolder[0],position);
holder.name.setTextColor(getResources().getColor(R.color.colorPrimary));
viewHolder[0] =holder;
}
});
}
}
private void initWeb(String s){
if (isPlaying){
player.release();
}
progressBar.setVisibility(GONE);
webView.loadUrl(s);
webView.setVisibility(VISIBLE);
playerLayout.setVisibility(GONE);
}
public void iniMoviePlayer(String url,String type,Context context){
Log.e("vTYpe :: ",type);
if (type.equals("embed") || type.equals("vimeo") || type.equals("gdrive")){
initWeb(url);
}else {
initVideoPlayer(url,context,type);
}
}
public void initVideoPlayer(String url,Context context,String type){
progressBar.setVisibility(VISIBLE);
if (player!=null){
player.release();
}
webView.setVisibility(GONE);
playerLayout.setVisibility(VISIBLE);
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new
AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector = new
DefaultTrackSelector(videoTrackSelectionFactory);
player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
player.setPlayWhenReady(true);
simpleExoPlayerView.setPlayer(player);
simpleExoPlayerView.setControllerVisibilityListener(new PlayerControlView.VisibilityListener() {
@Override
public void onVisibilityChange(int visibility) {
Log.e("Visibil", String.valueOf(visibility));
if (visibility==0){
imgBack.setVisibility(VISIBLE);
imgFull.setVisibility(VISIBLE);
imgfit.setVisibility(VISIBLE);
}else {
imgBack.setVisibility(GONE);
imgFull.setVisibility(GONE);
imgfit.setVisibility(GONE);
}
}
});
Uri uri = Uri.parse(url);
MediaSource mediaSource = null;
if (type.equals("hls")){
mediaSource = hlsMediaSource(uri,context);
}else if (type.equals("youtube")){
Log.e("youtube url :: ",url);
extractYoutubeUrl(url,context);
}
else if (type.equals("rtmp")){
mediaSource=rtmpMediaSource(uri);
}else {
mediaSource=mediaSource(uri);
}
player.prepare(mediaSource, true, false);
player.addListener(new Player.DefaultEventListener() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playWhenReady && playbackState == Player.STATE_READY) {
isPlaying=true;
progressBar.setVisibility(View.GONE);
Log.e("STATE PLAYER:::", String.valueOf(isPlaying));
}
else if (playbackState==Player.STATE_READY){
progressBar.setVisibility(View.GONE);
isPlaying=false;
Log.e("STATE PLAYER:::", String.valueOf(isPlaying));
}
else if (playbackState==Player.STATE_BUFFERING) {
isPlaying=false;
progressBar.setVisibility(VISIBLE);
Log.e("STATE PLAYER:::", String.valueOf(isPlaying));
} else {
// player paused in any state
isPlaying=false;
Log.e("STATE PLAYER:::", String.valueOf(isPlaying));
}
}
});
}
private void extractYoutubeUrl(String url,Context context) {
new YouTubeExtractor(context) {
@Override
public void onExtractionComplete(SparseArray<YtFile> ytFiles, VideoMeta vMeta) {
if (ytFiles != null) {
int itag = 18;
String downloadUrl = ytFiles.get(itag).getUrl();
Log.e("YOUTUBE::", String.valueOf(downloadUrl));
try {
MediaSource mediaSource = mediaSource(Uri.parse(downloadUrl));
player.prepare(mediaSource, true, false);
}catch (Exception e){
}
}
}
}.extract(url, true, true);
}
private MediaSource rtmpMediaSource(Uri uri){
MediaSource videoSource = null;
RtmpDataSourceFactory dataSourceFactory = new RtmpDataSourceFactory();
videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri);
return videoSource;
}
private MediaSource hlsMediaSource(Uri uri,Context context){
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
Util.getUserAgent(context, "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/JioTV/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"), bandwidthMeter);
MediaSource videoSource = new HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(uri);
return videoSource;
}
private MediaSource mediaSource(Uri uri){
return new ExtractorMediaSource.Factory(
new DefaultHttpDataSourceFactory("exoplayer")).
createMediaSource(uri);
}
private void addToFav(String url){
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.getString("status").equals("success")){
new ToastMsg(DetailsActivity.this).toastIconSuccess(response.getString("message"));
isFav=true;
imgAddFav.setBackgroundResource(R.drawable.outline_favorite_24);
}else {
new ToastMsg(DetailsActivity.this).toastIconError(response.getString("message"));
}
}catch (Exception e){
}finally {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
new ToastMsg(DetailsActivity.this).toastIconError(getString(R.string.error_toast));
}
});
new VolleySingleton(DetailsActivity.this).addToRequestQueue(jsonObjectRequest);
}
private void getTvData(String vtype,String vId){
String type = "&&type="+vtype;
String id = "&id="+vId;
String url = new ApiResources().getDetails()+type+id;
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
swipeRefreshLayout.setRefreshing(false);
shimmerFrameLayout.stopShimmer();
shimmerFrameLayout.setVisibility(GONE);
try {
tvName.setText(response.getString("tv_name"));
tvDes.setText(response.getString("description"));
V_URL=response.getString("stream_url");
CommonModels model=new CommonModels();
model.setTitle("HD");
model.setStremURL(V_URL);
model.setServerType(response.getString("stream_from"));
listDirector.add(model);
JSONArray jsonArray = response.getJSONArray("all_tv_channel");
for (int i=0;i<jsonArray.length();i++){
JSONObject jsonObject=jsonArray.getJSONObject(i);
CommonModels models =new CommonModels();
models.setImageUrl(jsonObject.getString("poster_url"));
models.setTitle(jsonObject.getString("tv_name"));
models.setVideoType("tv");
models.setId(jsonObject.getString("live_tv_id"));
listRelated.add(models);
}
relatedTvAdapter.notifyDataSetChanged();
JSONArray serverArray = response.getJSONArray("additional_media_source");
for (int i = 0;i<serverArray.length();i++){
JSONObject jsonObject=serverArray.getJSONObject(i);
CommonModels models=new CommonModels();
models.setTitle(jsonObject.getString("label"));
models.setStremURL(jsonObject.getString("url"));
models.setServerType(jsonObject.getString("source"));
listDirector.add(models);
}
serverApater.notifyDataSetChanged();
}catch (Exception e){
}finally {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
swipeRefreshLayout.setRefreshing(false);
}
});
new VolleySingleton(DetailsActivity.this).addToRequestQueue(jsonObjectRequest);
}
private void getSeriesData(String vtype,String vId){
String type = "&&type="+vtype;
String id = "&id="+vId;
String url = new ApiResources().getDetails()+type+id;
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
swipeRefreshLayout.setRefreshing(false);
shimmerFrameLayout.stopShimmer();
shimmerFrameLayout.setVisibility(GONE);
try {
tvName.setText(response.getString("title"));
tvRelease.setText("Release On "+response.getString("release"));
tvDes.setText(response.getString("description"));
//----realted post---------------
JSONArray relatedArray = response.getJSONArray("related_tvseries");
for (int i = 0;i<relatedArray.length();i++){
JSONObject jsonObject=relatedArray.getJSONObject(i);
CommonModels models=new CommonModels();
models.setTitle(jsonObject.getString("title"));
models.setImageUrl(jsonObject.getString("thumbnail_url"));
models.setId(jsonObject.getString("videos_id"));
models.setVideoType("tvseries");
listRelated.add(models);
}
relatedAdapter.notifyDataSetChanged();
//----episode------------
JSONArray mainArray = response.getJSONArray("season");
for (int i = 0;i<mainArray.length();i++){
//epList.clear();
JSONObject jsonObject=mainArray.getJSONObject(i);
CommonModels models=new CommonModels();
String season_name=jsonObject.getString("seasons_name");
models.setTitle(jsonObject.getString("seasons_name"));
Log.e("Season Name 1::",jsonObject.getString("seasons_name"));
JSONArray episodeArray=jsonObject.getJSONArray("episodes");
List<EpiModel> epList=new ArrayList<>();
for (int j=0;j<episodeArray.length();j++){
JSONObject object =episodeArray.getJSONObject(j);
EpiModel model=new EpiModel();
model.setSeson(season_name);
model.setEpi(object.getString("episodes_name"));
model.setStreamURL(object.getString("file_url"));
model.setServerType(object.getString("file_type"));
epList.add(model);
}
models.setListEpi(epList);
listDirector.add(models);
episodeAdapter=new EpisodeAdapter(DetailsActivity.this,listDirector);
rvServer.setAdapter(episodeAdapter);
episodeAdapter.notifyDataSetChanged();
}
}catch (Exception e){
}finally {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
swipeRefreshLayout.setRefreshing(false);
}
});
new VolleySingleton(DetailsActivity.this).addToRequestQueue(jsonObjectRequest);
}
private void getData(String vtype,String vId){
String type = "&&type="+vtype;
String id = "&id="+vId;
String url = new ApiResources().getDetails()+type+id;
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
shimmerFrameLayout.stopShimmer();
shimmerFrameLayout.setVisibility(GONE);
swipeRefreshLayout.setRefreshing(false);
try {
tvName.setText(response.getString("title"));
tvRelease.setText("Released On "+response.getString("release"));
tvDes.setText(response.getString("description"));
//----realted post---------------
JSONArray relatedArray = response.getJSONArray("related_movie");
for (int i = 0;i<relatedArray.length();i++){
JSONObject jsonObject=relatedArray.getJSONObject(i);
CommonModels models=new CommonModels();
models.setTitle(jsonObject.getString("title"));
models.setImageUrl(jsonObject.getString("thumbnail_url"));
models.setId(jsonObject.getString("videos_id"));
models.setVideoType("movie");
listRelated.add(models);
}
relatedAdapter.notifyDataSetChanged();
}catch (Exception e){
}finally {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
swipeRefreshLayout.setRefreshing(false);
}
});
new VolleySingleton(DetailsActivity.this).addToRequestQueue(jsonObjectRequest);
}
}
答案 0 :(得分:2)
尝试一下
// i have edit your adapter class
public class ServerApater extends RecyclerView.Adapter<ServerApater.OriginalViewHolder> {
private List<CommonModels> items = new ArrayList<>();
private Context ctx;
private View.OnClickListener onClickListener;
public ServerApater(Context context, List<CommonModels> items,View.OnClickListener onClickListener) {
this.items = items;
ctx = context;
this.onClickListener=onClickListener;
}
@Override
public ServerApater.OriginalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ServerApater.OriginalViewHolder vh;
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_server, parent, false);
v.findViewById(R.id.card_view_home).setOnClickListener(onClickListener);
vh = new ServerApater.OriginalViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ServerApater.OriginalViewHolder holder, final int position) {
CommonModels obj = items.get(position);
holder.name.setText(obj.getTitle());
if (position==0){
viewHolder=holder;
new DetailsActivity().iniMoviePlayer(obj.getStremURL(),obj.getServerType(),ctx);
holder.name.setTextColor(ctx.getResources().getColor(R.color.colorPrimary));
}
holder.cardView.setTag(obj);
}
@Override
public int getItemCount() {
return items.size();
}
public class OriginalViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public CardView cardView;
public OriginalViewHolder(View v) {
super(v);
name = v.findViewById(R.id.name);
cardView=v.findViewById(R.id.card_view_home);
}
}
public void chanColor(ServerApater.OriginalViewHolder holder,int pos){
if (pos!=0){
viewHolder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
if (holder!=null){
holder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
}
}
// call Adapter from activity like this
ServerApater serverApater=new ServerApater(this,"pass here commonModel type
list",this);
// implement View.OnClickListener with Activity like this
AppActivity extends AppCompatActivity implements View.OnClickListener
// then implement onclick() method
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.card_view_home:
CommonModels obj = (CommonModels) v.getTag();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(obj.getStremURL()), "video/*");
startActivity(Intent.createChooser(intent, "Complete action using"));
break;
}
}
答案 1 :(得分:0)
为此替换适配器
public class ServerApater extends RecyclerView.Adapter<ServerApater.OriginalViewHolder> {
private List<CommonModels> items = new ArrayList<>();
private Context ctx;
private ServerApater.OnItemClickListener mOnItemClickListener;
private ServerApater.OriginalViewHolder viewHolder;
public interface OnItemClickListener {
void onItemClick(View view, CommonModels obj);
}
public void setOnItemClickListener(ServerApater.OnItemClickListener mItemClickListener) {
this.mOnItemClickListener = mItemClickListener;
}
public ServerApater(Context context, List<CommonModels> items) {
this.items = items;
ctx = context;
}
@Override
public ServerApater.OriginalViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ServerApater.OriginalViewHolder vh;
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_server, parent, false);
vh = new ServerApater.OriginalViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ServerApater.OriginalViewHolder holder, final int position) {
CommonModels obj = items.get(position);
holder.name.setText(obj.getTitle());
if (position==0){
viewHolder=holder;
new DetailsActivity().iniMoviePlayer(obj.getStremURL(),obj.getServerType(),ctx);
holder.name.setTextColor(ctx.getResources().getColor(R.color.colorPrimary));
}
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, items.get(position));
}
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public class OriginalViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public CardView cardView;
public OriginalViewHolder(View v) {
super(v);
name = v.findViewById(R.id.name);
cardView=v.findViewById(R.id.card_view_home);
}
}
public void chanColor(ServerApater.OriginalViewHolder holder,int pos){
if (pos!=0){
viewHolder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
if (holder!=null){
holder.name.setTextColor(ctx.getResources().getColor(R.color.grey_60));
}
}
}
并将此代码添加到您的活动中:
adapter.setOnItemClickListener(this);
//Then implement the listener
@Override
onItemClick(int position, CommonModels obj){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(obj.getStremURL()), "video/*");
startActivity(Intent.createChooser(intent, "Complete action using"));
}