请试试这个原理,通过接口创建activity、adapter之间的通信,希望这个原理对你有帮助:
模型类:
public class YourModel {
private String firstName;
private String lastName;
public YourModel(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
//... setters & getters
}
接口:
public interface AdapterCallback {
void onClickCallback(YourModel itemModel);
}
适配器:
public class YourAdapter extends RecyclerView.Adapter<YourAdapter.ViewHolder> {
private List<YourModel> data;
private AdapterCallback callback;
private Context context;
public YourAdapter(List<YourModel> data, AdapterCallback callback) {
this.data = data;
this.callback = callback
}
@Override
public YourAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
View item = inflater.inflate(R.layout.item_recycler, parent, false);
return new ViewHolder(item);
}
@Override
public void onBindViewHolder(YourAdapter.ViewHolder holder, int position) {
YourModel itemModel = data.get(position);
String lastName = itemModel.getLastName();
String firstName = itemModel.getFirstName();
holder.tvFirstName.setText(firstName);
holder.tvLastName.setText(lastName);
holder.tvFirstName.setOnClickListener {
callback.onClickCallback(itemModel));
}
}
@Override
public int getItemCount() {
return data.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
private TextView tvFirstName;
private TextView tvLastName;
ViewHolder(View itemView) {
super(itemView);
tvFirstName = (TextView) itemView.findViewById(R.id.tv_first);
tvLastName = (TextView) itemView.findViewById(R.id.tv_last);
}
}
活动:
public class MyActivity extends AppCompatActivity implements AdapterCallback {
private YourAdapter adapter;
private List<YourModel> items;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. init your list && fill it with needed data
// 2. init your adapter
// 3. put your list as parameter into constructor + interface
items = new ArrayList<YourModel>()
items.add(YourModel("John", "Doe"));
items.add(YourModel("Bob", "Marley"));
adapter = new YourAdapter(items, this)
}
@Override
public void onClickCallback(YourModel itemModel) {
Toast.makeText(this, itemModel.getFirstName(), Toast.LENGTH_SHORT).show();
}
我认为这些信息足以理解我的意思。
同样的原则,您可以在界面中创建多个 OnClick 方法,或者为几个按钮放置一个 onClick 并检查 id 或其他内容以获取所需的信息。 祝你好运