下面是一个将Android MVVM RecyclerView点击监听器的Kotlin代码转换为Java的示例:
Kotlin代码:
class MyAdapter(private val itemList: List, private val clickListener: OnItemClickListener) : RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ItemViewHolder(view)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val item = itemList[position]
val itemViewHolder = holder as ItemViewHolder
itemViewHolder.bind(item)
itemViewHolder.itemView.setOnClickListener {
clickListener.onItemClick(item)
}
}
override fun getItemCount(): Int {
return itemList.size
}
interface OnItemClickListener {
fun onItemClick(item: String)
}
inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val textView: TextView = itemView.findViewById(R.id.textView)
fun bind(item: String) {
textView.text = item
}
}
}
Java代码:
public class MyAdapter extends RecyclerView.Adapter {
private List itemList;
private OnItemClickListener clickListener;
public MyAdapter(List itemList, OnItemClickListener clickListener) {
this.itemList = itemList;
this.clickListener = clickListener;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
String item = itemList.get(position);
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
itemViewHolder.bind(item);
itemViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clickListener.onItemClick(item);
}
});
}
@Override
public int getItemCount() {
return itemList.size();
}
public interface OnItemClickListener {
void onItemClick(String item);
}
public class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
public ItemViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
public void bind(String item) {
textView.setText(item);
}
}
}
使用示例:
public class MainActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener {
private RecyclerView recyclerView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List itemList = Arrays.asList("Item 1", "Item 2", "Item 3");
adapter = new MyAdapter(itemList, this);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
@Override
public void onItemClick(String item) {
Toast.makeText(this, item, Toast.LENGTH_SHORT).show();
}
}
在上面的示例中,我们将Kotlin代码转换为了Java代码,并保持了相同的功能和结构。这样,您就可以在Java项目中使用此适配器和点击监听器。