【发布时间】:2021-07-02 14:58:21
【问题描述】:
它只显示选定的动物名称,这是代码
public class MainActivity extends AppCompatActivity implements AnimalAdapter.MyClickInterface {
RecyclerView recyclerView;
ArrayList<AnimalEntry> animals;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view_adapter);
animals = new ArrayList<>();
animals.add(new AnimalEntry("Lion",R.drawable.lion));
animals.add(new AnimalEntry("Cat", R.drawable.cat));
animals.add(new AnimalEntry("Horse", R.drawable.hourse));
animals.add(new AnimalEntry("Wolf", R.drawable.wolf));
animals.add(new AnimalEntry("Fox", R.drawable.fox));
animals.add(new AnimalEntry("Elephant", R.drawable.elephant));
animals.add(new AnimalEntry("Goat", R.drawable.goat));
animals.add(new AnimalEntry("Lemur", R.drawable.lemur));
animals.add(new AnimalEntry("Giraffe", R.drawable.giraffe));
animals.add(new AnimalEntry("Zebra", R.drawable.zebra));
AnimalAdapter animalAdapter = new AnimalAdapter(animals, this,this);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(animalAdapter);
}
@Override
public void onItemClick(int positionOfAnimal) {
Toast.makeText(this, "Clicked on "+animals.get(positionOfAnimal).getName(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,AnimalInfo.class);
//Shows the intently the image of the animals in the next class..
intent.putExtra("image",animals.get(positionOfAnimal).getImage());
//This will intently the heading name of the animals in the next class..
intent.putExtra("hName",animals.get(positionOfAnimal).getName());
startActivity(intent);
}
}
public class AnimalEntry {
String name;
int image;
public AnimalEntry(String name, int image) {
this.name = name;
this.image = image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
public class AnimalAdapter extends RecyclerView.Adapter<AnimalAdapter.AnimalRowHolder> {
ArrayList<AnimalEntry> animals;
Context context;
MyClickInterface myClickInterface;
public AnimalAdapter(ArrayList<AnimalEntry> animals, Context context, MyClickInterface myClickInterface) {
this.animals = animals;
this.context = context;
this.myClickInterface = myClickInterface;
}
@Override
public int getItemCount() {
return animals.size();
}
@NonNull
@Override
public AnimalRowHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.animal_row, parent, false);
return new AnimalRowHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AnimalRowHolder holder, int position) {
holder.textViewAnimals.setText(animals.get(position).getName());
holder.imageViewAnimals.setImageResource(animals.get(position).getImage());
}
class AnimalRowHolder extends RecyclerView.ViewHolder {
ImageView imageViewAnimals;
TextView textViewAnimals;
public AnimalRowHolder(@NonNull View itemView) {
super(itemView);
imageViewAnimals = itemView.findViewById(R.id.image_view_animals);
textViewAnimals = itemView.findViewById(R.id.txt_animal);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myClickInterface.onItemClick(getAdapterPosition());
}
});
}
public void bind(AnimalEntry entry, int position) {
imageViewAnimals.setImageResource(entry.image);
textViewAnimals.setText(entry.name);
}
}
interface MyClickInterface {
void onItemClick(int positionOfAnimal);
}
}
我想针对所选动物显示描述。
【问题讨论】:
-
我想你不明白,recyclerView 是如何工作的。我会尝试回答,但我建议你阅读 android 指南,它很有帮助。
标签: java android-studio android-recyclerview