Java 我有多个recyclerViews,它们应该出现在另一个XML视图之后,
我有多个recyclerViews,它们应该出现在另一个XML视图之后,但是它们没有,我正在使用一个适配器类来管理它。在使用log.v之后,我发现函数本身“在Adappter类中”没有被调用,我不知道为什么Java 我有多个recyclerViews,它们应该出现在另一个XML视图之后,,java,android,xml,android-recyclerview,Java,Android,Xml,Android Recyclerview,我有多个recyclerViews,它们应该出现在另一个XML视图之后,但是它们没有,我正在使用一个适配器类来管理它。在使用log.v之后,我发现函数本身“在Adappter类中”没有被调用,我不知道为什么 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ScrollVie
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout 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"
tools:context="com.example.linah.movielessonapp.Detailed_Movie">
<TextView
android:id="@+id/MovieTitle"
... />
<ImageView
android:id="@+id/MovieImage"
.../>
<TextView
android:id="@+id/MovieReview"
... />
<Button
android:id="@+id/Favbutton"
... />
<TextView
android:id="@+id/Date"
... />
<TextView
android:id="@+id/Rate"
.../>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/Trailers_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/MovieReview" />
<android.support.v7.widget.RecyclerView
android:id="@+id/reviews_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/Trailers_recycler_view"
/>
</LinearLayout>
</RelativeLayout>
</ScrollView>
公共类详细信息\u活动{
public static List<Movie_Details> movieDetailsList = new ArrayList<>();
private String ID;
public String Trailer_OR_Review = "trailer";
private boolean noConnection;
private boolean trailersDone;
private int trailersSize;
private static MoviesDetailedAdapter mAdapter;
private RecyclerView TrailerRecyclerView, ReviewsRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detailed__movie);
TrailerRecyclerView = (RecyclerView) findViewById(R.id.Trailers_recycler_view);
ReviewsRecyclerView = (RecyclerView) findViewById(R.id.reviews_recycler_view);
new getData().execute("trailer");
// adapter
mAdapter = new MoviesDetailedAdapter(movieDetailsList,TrailerRecyclerView.getContext(),Trailer_OR_Review);
// mAdapter = new MoviesDetailedAdapter(movieDetailsList,ReviewsRecyclerView.getContext(),Trailer_OR_Review);
TrailerRecyclerView.setLayoutManager(new LinearLayoutManager(TrailerRecyclerView.getContext()));
// ReviewsRecyclerView.setLayoutManager(new LinearLayoutManager(ReviewsRecyclerView.getContext()));
TrailerRecyclerView.setItemAnimator(new DefaultItemAnimator());
// ReviewsRecyclerView.setItemAnimator(new DefaultItemAnimator());
noConnection = false;
if(isOnline(Detailed_Movie.this)) {
new getData().execute("trailer");
mAdapter.notifyDataSetChanged();
}
// set the adapter
TrailerRecyclerView.setAdapter(mAdapter);
prepareMovieData();
Intent i = getIntent();
// http://api.themoviedb.org/3/movie/{id}/videos
String ImgPath = "http://image.tmdb.org/t/p/w185/";
String VideoPath = "http://www.youtube.com/watch?v=";
String MovieTitle = i.getExtras().getString("title");
Toast.makeText(getApplicationContext(),MovieTitle+" is selected!", Toast.LENGTH_SHORT).show();
ImageView img = (ImageView)findViewById(R.id.MovieImage);
TextView Title = (TextView)findViewById(R.id.MovieTitle);
TextView Review = (TextView)findViewById(R.id.MovieReview);
TextView Date = (TextView)findViewById(R.id.Date);
TextView Rate = (TextView)findViewById(R.id.Rate);
Button Fav = (Button) findViewById(R.id.Favbutton);
// get data from intent
assert Title != null;
Title. setText(i.getExtras().getString("title"));
assert Review != null;
Review.setText(i.getExtras().getString("review"));
assert Rate != null;
Rate. setText(i.getExtras().getString("rate"));
assert Date != null;
Date. setText(i.getExtras().getString("date"));
ID = i.getExtras().getString("id");
String Imgurl = i.getExtras().getString("img");
// append ImgPath
switch (ImgPath = new StringBuilder()
.append(ImgPath)
.append(Imgurl)
.toString()) {
}
// append VideoPath
VideoPath = new StringBuilder()
.append(VideoPath)
.append("6uEMl2BtcqQ")
.toString();
// VideoPath = VideoPath + getString(R.string.API_KEY);
final String finalVideoPath = VideoPath;
if (Fav != null) {
Fav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(finalVideoPath));
startActivity(intent);
}
});
}
Picasso.with(this)
.load(ImgPath)
.placeholder(R.drawable.loading) //this is optional the image to display while the url image is downloading
.error(R.drawable.error) //this is also optional if some error has occurred in downloading the image
.into(img);
TrailerRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), TrailerRecyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
Movie_Details movie = movieDetailsList.get(position);
if (position < trailersSize) {
// String link = ((TextView) findViewById(R.id.Link)).getText().toString();
// String link = movie.getKey();
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=" + movie.getKey())));
}
}
@Override
public void onLongClick(View view, int position) {
}
}));
}
private void prepareMovieData() {
Movie_Details movie = new Movie_Details("MovieTrailer","6uEMl2BtcqQ","Linah","verynice");
movieDetailsList.add(movie);
mAdapter.notifyDataSetChanged();
}
public interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
public static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private GestureDetector gestureDetector;
private MainActivity.ClickListener clickListener;
public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final MainActivity.ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}
public RecyclerTouchListener(Context applicationContext, RecyclerView trailerRecyclerView, ClickListener clickListener) {
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
public class getData extends AsyncTask<String, Void, Void> {
...
}
}
publicstaticlist movieDetailsList=newarraylist();
私有字符串ID;
公共字符串拖车\u或\u Review=“拖车”;
私有布尔无连接;
私有布尔trailersDone;
私人内部跟踪;
私人静态电影详细改编;
私人RecyclerView TrailerRecyclerView、ReviewRecyclerView;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u detailed\u电影);
TrailerRecyclerView=(RecyclerView)findViewById(R.id.Trailes\u recycler\u视图);
ReviewRecyclerView=(RecyclerView)findViewById(R.id.reviews\u recycler\u视图);
新建getData()。执行(“拖车”);
//适配器
mAdapter=新的MoviesDetailedAdapter(movieDetailsList、TrailerRecyclerView.getContext()、Trailer\u或\u Review);
//mAdapter=新的MoviesDetailedAdapter(movieDetailsList、ReviewRecyclerView.getContext()、Trailer_或_Review);
setLayoutManager(新的LinearLayoutManager(TrailerRecyclerView.getContext());
//ReviewRecyclerView.setLayoutManager(新的LinearLayoutManager(ReviewRecyclerView.getContext());
setItemAnimator(新的DefaultItemAnimator());
//setItemAnimator(新的DefaultItemAnimator());
无连接=错误;
if(isOnline(详细的电影){
新建getData()。执行(“拖车”);
mAdapter.notifyDataSetChanged();
}
//设置适配器
TrailerRecyclerView.setAdapter(mAdapter);
prepareMovieData();
Intent i=getIntent();
// http://api.themoviedb.org/3/movie/{id}/视频
字符串ImgPath=”http://image.tmdb.org/t/p/w185/";
字符串VideoPath=”http://www.youtube.com/watch?v=";
String MovieTitle=i.getExtras().getString(“标题”);
Toast.makeText(getApplicationContext(),MovieTitle+“已选中!”,Toast.LENGTH\u SHORT.show();
ImageView img=(ImageView)findViewById(R.id.MovieImage);
TextView Title=(TextView)findViewById(R.id.MovieTitle);
TextView Review=(TextView)findViewById(R.id.MovieReview);
TextView日期=(TextView)findViewById(R.id.Date);
TextView比率=(TextView)findViewById(R.id.Rate);
按钮Fav=(按钮)findViewById(R.id.Favbutton);
//从intent获取数据
断言标题!=null;
Title.setText(i.getExtras().getString(“Title”);
断言审核!=null;
Review.setText(i.getExtras().getString(“Review”);
断言速率!=null;
Rate.setText(i.getExtras().getString(“Rate”);
断言日期!=null;
Date.setText(i.getExtras().getString(“日期”);
ID=i.getExtras().getString(“ID”);
字符串Imgurl=i.getExtras().getString(“img”);
//追加ImgPath
开关(ImgPath=new StringBuilder()
.append(ImgPath)
.append(Imgurl)
.toString()){
}
//附加视频路径
VideoPath=新的StringBuilder()
.append(视频路径)
.附加(“6uEMl2BtcqQ”)
.toString();
//VideoPath=VideoPath+getString(R.string.API_键);
最终字符串finalVideoPath=视频路径;
如果(Fav!=null){
Fav.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(意向.行动\视图,
parse(finalVideoPath));
星触觉(意向);
}
});
}
毕加索。用(这个)
.load(ImgPath)
.placeholder(R.drawable.loading)//这是下载url图像时显示的图像的可选选项
.error(R.drawable.error)//如果在下载映像时发生错误,则此选项也是可选的
.into(img);
addOnItemTouchListener(新的RecyclerTouchListener(getApplicationContext(),TrailerRecyclerView,新的ClickListener()){
@凌驾
公共void onClick(视图,int位置){
Movie\u Details Movie=movieDetailsList.get(位置);
如果(位置private List<Movie_Details> moviesList;
private Context context;
public String Trailer_OR_Review = "trailer";
public TextView TrailerName , Author , Content , TrailerLink ;
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
public MyViewHolder(View view) {
super(view);
Log.v("here","MyViewHolder");
TrailerName = (TextView) view.findViewById(R.id.Name);
Author = (TextView) view.findViewById(R.id.Author);
TrailerLink = (TextView) view.findViewById(R.id.Link);
Content = (TextView) view.findViewById(R.id.Content);
view.setOnCreateContextMenuListener(this);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
}
}
public MoviesDetailedAdapter(List<Movie_Details> moviesList,Context context, String trailerORReview) {
this.moviesList = moviesList;
this.context = context;
Trailer_OR_Review = trailerORReview;
Log.v("here","madapter");
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView;
Log.v("here","onCreateViewHolder");
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.trailers_layout, parent, false);
/*
if (Trailer_OR_Review.equals("trailers")){
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.trailers_layout, parent, false);
}
else{
itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.reviews_layout, parent, false);
}*/
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Log.v("here","onBindViewHolder");
Movie_Details movie_details = moviesList.get(position);
Log.v("here",movie_details.getContent());
Log.v("here",movie_details.getName());
TrailerName.setText(movie_details.getName());
TrailerLink.setText(movie_details.getKey());
/*
if (Trailer_OR_Review.equals("trailers")){
TrailerName.setText(movie_details.getName());
TrailerLink.setText(movie_details.getKey());
}
else{
Author.setText(movie_details.getAuthor());
Content.setText(movie_details.getContent());
}*/
}