我试着制作一个菜谱应用程序,通过api获取数据来显示菜谱,我在相对布局中显示了卡片,并在新活动中显示了菜谱的详细信息,但单击卡片后我无法打开新活动
recipeadapter.java文件
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.recipeappandroid.Model.Recipe;
import com.example.recipeappandroid.R;
import com.example.recipeappandroid.Viewholder.recipeViewHolder;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
public class RecipeAdapter extends RecyclerView.Adapter<recipeViewHolder>{
private Context mContext;
private ArrayList<Recipe> mRecipe;
public static OnItemClickListener mListener;
public interface OnItemClickListener{
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener)
{
mListener = listener;
}
public RecipeAdapter(Context context,ArrayList<Recipe> recipe) {
mContext = context;
mRecipe = recipe;
}
/*public void setData(ArrayList<Recipe> mRecipe) {
this.mRecipe = mRecipe;
}*/
@NonNull
@Override
public recipeViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.recycler_row, viewGroup, false);
return new recipeViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull recipeViewHolder viewHolder, int i) {
Recipe recipe = mRecipe.get(i);
Picasso.get().load(recipe.getImg()).into(viewHolder.image);
viewHolder.recipe_title.setText(recipe.getTitle());
viewHolder.recipe_data.setText(recipe.getData());
}
@Override
public int getItemCount() {
return mRecipe.size();
}
}
配方.java
package com.example.recipeappandroid.Model;
public class Recipe {
private String img;
private String title;
private String data;
public Recipe(String imgurl, String img_title, String img_data) {
img = imgurl;
title = img_title;
data = img_data;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
我想打开的新活动
recipeacitivity.java文件
package com.example.recipeappandroid;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import static com.example.recipeappandroid.Fragments.SearchFragment.EXTRA_DATA;
import static com.example.recipeappandroid.Fragments.SearchFragment.EXTRA_TITLE;
import static com.example.recipeappandroid.Fragments.SearchFragment.EXTRA_URL;
public class RecipeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe);
Intent intent = getIntent();
String imageUrl = intent.getStringExtra(EXTRA_URL);
String recipeTitle = intent.getStringExtra(EXTRA_TITLE);
String recipeData = intent.getStringExtra(EXTRA_DATA);
ImageView imageView = findViewById(R.id.image_view_detail);
TextView RecipeTitle = findViewById(R.id.recipe_name_detail);
TextView RecipeData = findViewById(R.id.recipe_data_detail);
Picasso.get().load(imageUrl).fit().centerCrop().into(imageView);
RecipeTitle.setText(recipeTitle);
RecipeData.setText(recipeData);
}
}
有人能帮我吗
2条答案
按热度按时间46scxncf1#
在你的活动中
RecipeAdapter
:kcugc4gi2#
添加单击可循环查看适配器viewholder位置
并从活动初始化setonitemclicklistener