【发布时间】:2017-01-07 15:40:43
【问题描述】:
编辑 我(将 onClick 移至 onBindViewHolder 但仍然没有成功
我尝试使用 RecyclerView 制作应用程序,您可以在单击时看到项目的详细信息。所以你有一个带有照片及其标题的项目列表。当您点击它时,新屏幕会显示新/不同的照片、相同的标题和附加文本。 应用设计如图
我的适配器的代码是:
公共类 RecyclerAdapter 扩展 recyclerView.Adapter {
private String[] titles = {
"Title A",
"Title B",
"Title C"};
private String[] description = {
"Description A",
"Description B",
"Description C"};
private int[] images = {
R.drawable.picture A,
R.drawable.picture B,
R.drawable.picture C,};
private int[] images2 = {
R.drawable.picture A2,
R.drawable.picture B2,
R.drawable.picture C2,
};
class ViewHolder extends RecyclerView.ViewHolder{
public ImageView itemImage;
public ImageView itemImage2;
public TextView itemTitle;
public TextView itemTitle2;
public ViewHolder(View itemView) {
super(itemView);
itemImage = (ImageView)itemView.findViewById(R.id.image_start);
itemTitle = (TextView)itemView.findViewById(R.id.article_title);
//SecondActivity where different picture and decription should be displayed, but when I uncomment it the app crashes
//itemTitle2 =(TextView)itemView.findViewById(R.id.article_ingredients);
//itemImage = (ImageView)itemView.findViewById(R.id.image_details);
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
int position = getAdapterPosition();
Intent intent = new Intent(v.getContext(), SecondActivity.class);
intent.putExtra("title",itemTitle.getText().toString());
intent.putExtra("description", itemTitle2.getText().toString()); //this one on makes app crash
v.getContext().startActivity(intent);
}
});
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.article_layout, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
viewHolder.itemTitle.setText(titles[i]);
// viewHolder.itemDetail.setText(details[i]);
viewHolder.itemImage.setImageResource(images[i]);
// viewHolder.itemTitle2.setText(titles2[i]);
}
@Override
public int getItemCount() {
return titles.length;
}
}
我尝试了不同的选择,但没有结果。提前感谢您的帮助
【问题讨论】:
-
你得到什么错误?
-
在这种形式的应用程序工作,虽然不做我想做的事。当我取消注释时,我得到: FATAL EXCEPTION: main java.lang.NullPointerException at com.pl.mobinet.cookentials.RecyclerAdapter.onBindViewHolder(RecyclerAdapter.java:97) at com.pl.mobinet.cookentials.RecyclerAdapter.onBindViewHolder(RecyclerAdapter. java:15)
标签: android android-activity android-recyclerview