[英]Android Studio: how can I see the information carried through the intent method on my second activity?
大家好,我是 android 開發的新手,我發現 recyclerview 很混亂。 我目前正在嘗試將一項活動的信息傳遞給另一項活動,但在我的第二項活動中,僅顯示卡片視圖。 任何人都可以幫助我嗎? 非常感謝!
我的布局文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/card_view_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp"
app:cardCornerRadius="5dp"
app:cardElevation="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
app:cardBackgroundColor="#808080"
tools:context=".ChosenExerciseActivity"
android:elevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="vertical">
<ImageView
android:id="@+id/selected_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:src="@drawable/ic_launcher_background"></ImageView>
<TextView
android:id="@+id/selected_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Exercise Name"
android:textStyle="bold"
android:layout_marginTop="5dp"
android:layout_below="@id/selected_image"></TextView>
<TextView
android:id="@+id/selected_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/selected_name"
android:layout_marginTop="7dp"
android:text="Exercise description"
android:textStyle="italic"
android:layout_marginStart="5dp"></TextView>
</LinearLayout>
</androidx.cardview.widget.CardView>
我的第二個活動
public class ChosenExerciseActivity extends AppCompatActivity {
TextView exercise_name, exercise_description;
ImageView exercise_image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chosen_exercise);
exercise_name = findViewById(R.id.selected_name);
exercise_description = findViewById(R.id.selected_description);
exercise_image = findViewById(R.id.selected_image);
Intent intent = getIntent();
exercise_name.setText(intent.getStringExtra("selected_name"));
exercise_description.setText(intent.getStringExtra("selected_description"));
exercise_image.setImageResource(intent.getIntExtra("selected_image", 0));
//System.out.println(exercise_name.getText().toString());
}
}
我的適配器 class
/**
* Class responsible for
*/
public class ExerciseAdapter extends RecyclerView.Adapter<ExerciseAdapter.ExerciseViewHolder> {
private ArrayList<Exercise> exercisesArray = new ArrayList<>();
Context context;
public ExerciseAdapter(ArrayList<Exercise> exercisesArray, Context context){
this.exercisesArray = exercisesArray;
this.context = context;
} //constructor
@NonNull
@Override
public ExerciseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.homepage_design, parent, false); //inflate the layout xml file and display it on the parent
return new ExerciseViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ExerciseViewHolder holder, int position) {
holder.bind(exercisesArray.get(position)); //bind method comes from the ProjectViewHolder inner class
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), ChosenExerciseActivity.class);
intent.putExtra( "text_view_exercise_name", exercisesArray.get(position).getExercise_name());
intent.putExtra( "text_view_exercise_description", exercisesArray.get(position).getExercise_description());
intent.putExtra( "text_view_exercise_description", exercisesArray.get(position).getExercise_image());
v.getContext().startActivity(intent); //you cannot start an activity without a context(this) so that you a Context object which will refer to the activity you wish to retrieve the information
}
});
}
@Override
public int getItemCount() {
return exercisesArray.size();
}
class ExerciseViewHolder extends RecyclerView.ViewHolder {
TextView text_view_exercise_name, text_view_exercise_description;
ImageView image_view_exercise_image;
CardView card_view_exercises;
public ExerciseViewHolder(@NonNull View itemView){
super(itemView);
//itemView.setOnClickListener(this); //set the screen to capture the users click
card_view_exercises = itemView.findViewById(R.id.card_view_parent);
text_view_exercise_name = itemView.findViewById(R.id.text_view_exercise_name);
text_view_exercise_description = itemView.findViewById(R.id.text_view_exercise_description);
image_view_exercise_image = itemView.findViewById(R.id.image_view_exercise_image);
}
public void bind(Exercise exercise) {
text_view_exercise_name.setText(exercise.getExercise_name());
text_view_exercise_description.setText(exercise.getExercise_description());
image_view_exercise_image.setImageResource(exercise.getExercise_image());
}
// @Override
// public void onClick(View v) {
// int position = getAdapterPosition();
// Exercise chosenExercise = exercisesArray.get(position);
//
// }
}
}
1 創建一個接口來處理適配器中的單擊偵聽器,並在您的活動中注冊這些偵聽器。
2 將意圖鍵修復為具有重復鍵
Intent intent = new Intent(v.getContext(), ChosenExerciseActivity.class);
intent.putExtra( "selected_name", exercisesArray.get(position).getExercise_name());
intent.putExtra( "selected_description", exercisesArray.get(position).getExercise_description());
intent.putExtra( "selected_image", exercisesArray.get(position).getExercise_image());
v.getContext().startActivity(intent);
如果您在某些地方聲明意圖鍵常量會更好
public static int INTENT_EXERCISE_NAME = "INTENT_EXERCISE_NAME"
用法:
intent.putExtra(INTENT_EXERCISE_NAME, exercisesArray.get(position).getExercise_name());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.