因为这是Customers 的列表,所以你需要一个点击监听器,就像这样
interface CustomerClickListener {
fun onCustomerClick(position:Int)
}
您将在您的Activity 中实现它并将传递给您的Adapter:RecyclerView.Adapter。在适配器中,当一个项目被点击时调用这个监听器。
class CustomerHolder(listener:CustomerClickListener, view:View):RecyclerView.ViewHolder(view) {
//...
view.setOnClickListener { listener.onCustomerClick(adapterPosition) }
}
在您将实现 CustomerClickListener 的活动中,使用单击的客户的id 调用第二个活动。像这样
override fun onCustomerClick(position:Int) {
val id = customers[position].id ?: return
CustomerInfoActivity.open(id)
}
方法CustomerInfoActivity.open(id) 创建一个启动第二个活动的意图并传递一个额外的id。在您的第二个活动中,从意图中检索传递的客户 ID,并调用数据库以获取其信息。
更新为 Java 版本
创建接口CustomerClickListener,用于与recycler view items交互。
public interface CustomerClickListener {
void onCustomerClick(int position);
}
将此接口作为参数添加到您的Adapter 构造函数。
public class CustomersAdapter extends RecyclerView.Adapter<CustomerHolder> {
private CustomerClickListener listener;
public CustomersAdapter(CustomerClickListener listener) {
this.listener = listener;
}
class CustomerHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private CustomerClickListener listener;
CustomerHolder(View itemView, CustomerClickListener listener) {
super(itemView);
this.listener = listener;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (listener != null) {
listener.onCustomerClick(getAdapterPosition());
}
}
}
}
从上面实现接口并将其传递给适配器。像这样:
public class MyActivity extends Activity implements CustomerClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
recyclerView = findViewById(R.id.recycler_view);
CustomersAdapter adapter = new CustomersAdapter(this);
recyclerView.setAdapter(adapter);
}
@Override
public void onCustomerClick(int position) {
// Get customer based on the position from the customers list
Customer customer = customers.get(position);
CustomerInfoActivity.open(this, customer.getId());
}
}
在CustomerInfoActivity 中添加这个静态方法,它会将客户ID 添加到intent。
public static void open(Activity activity, long customerId) {
Intent intent = new Intent(activity, CustomerInfoActivity.class);
intent.putExtra("CustomerID", customerId);
activity.startActivity(intent);
}
并且在CustomerInfoActivity 中通过这样的客户ID
公共类 CustomerInfoActivity 扩展 Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
//...
Intent intent = getIntent();
if (intent != null && intent.hasExtra("CustomerID")) {
long customerId = intent.getLongExtra("CustomerID", -1);
// TODO: get customer details based on customer id
} else {
// ...
}
}
}