【发布时间】:2019-12-12 15:20:50
【问题描述】:
我有一个 recyclerview,它使用 viewmodel 来查看项目。但是当我单击该项目时,它不是单击/开始新活动。
适配器类:
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.ViewHolder> {
private ArrayList<Search> arrayList;
private Context context;
private LayoutInflater layoutInflater;
private MovieAdapterListener listener;
public MovieAdapter(ArrayList<Search> arrayList, Context context) {
this.context = context;
this.arrayList = arrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (layoutInflater==null){
layoutInflater=LayoutInflater.from(parent.getContext());
}
MyListBinding myListBinding= DataBindingUtil.inflate(layoutInflater, R.layout.mylist,parent,false);
return new ViewHolder(myListBinding);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
Search myListViewModel=movieListFiltered.get(position);
holder.bind(myListViewModel);
}
@Override
public int getItemCount() {
return movieListFiltered.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
private MyListBinding myListBinding;
public ViewHolder(@NonNull MyListBinding myListBinding) {
super(myListBinding.getRoot());
this.myListBinding=myListBinding;
}
public void bind(Search myli){
this.myListBinding.setMylistmodel(myli);
myListBinding.executePendingBindings();
}
public MyListBinding getMyListBinding(){
return myListBinding;
}
}
public interface MovieAdapterListener {
void onMovieSelected(Search movieSearch);
}
}
然后我在MainActivity下面创建
@Override
public void onMovieSelected(Search movie) {
Toast.makeText(getApplicationContext(), movie.Title, Toast.LENGTH_LONG).show();
Intent intent = new Intent(this, MovieDetailsActivity.class);
intent.putExtra("IMDB_ID", movie.Title);
startActivity(intent);
}
当我单击该项目时,没有任何反应。有人可以帮我吗?
【问题讨论】:
-
提供适配器的完整代码。您在哪里将您的
MovieAdapterListener传递给适配器? -
toast 是否显示预期的输出?
-
@Marat:上面附有完整的适配器
-
@Karrthik 没有任何显示。如果您需要完整的 MainActivity 代码,请告诉我
标签: android android-recyclerview android-viewmodel