Android 如何将视图Id从回收器适配器传递给活动?
单击“回收器视图”列表项时,我正在尝试将视图Id从“回收器视图适配器”传递给“活动”Android 如何将视图Id从回收器适配器传递给活动?,android,android-recyclerview,android-view,Android,Android Recyclerview,Android View,单击“回收器视图”列表项时,我正在尝试将视图Id从“回收器视图适配器”传递给“活动” public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> implements FastScrollRecyclerView.SectionedAdapter{ public interface OnRecyclerItemClickListener { void onRecyclerItem
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> implements FastScrollRecyclerView.SectionedAdapter{
public interface OnRecyclerItemClickListener {
void onRecyclerItemClick(User data,int id);
}
List<User> dataSource;
private OnRecyclerItemClickListener onRecyclerItemClickListener;
private Context context;
public ActiveBeepsAdapter(List<User> dataArgs, OnRecyclerItemClickListener onRecyclerItemClickListener,Context context) {
this.dataSource = dataArgs;
this.onRecyclerItemClickListener = onRecyclerItemClickListener;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_active_message, parent, false);
ViewHolder viewHolder = new ViewHolder(view, onRecyclerItemClickListener);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
User user = dataSource.get(position);
holder.tvId.setText(user.getId());
Picasso.with(context)
.load(user.getProfilePicUrl())
.placeholder(R.drawable.bg_logo)
.error(R.drawable.bg_logo)
.transform(new CircleTransform())
.into(holder.ivUserProfile);
}
@Override
public int getItemCount() {
return dataSource.size();
}
@NonNull
@Override
public String getSectionName(int i) {
return String.valueOf(dataSource.get(i).getId().charAt(0));
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private OnRecyclerItemClickListener onRecyclerItemClickListener;
User data = new User();
TextView tvId;
ImageView ivUserProfile;
public ViewHolder(View itemView, OnRecyclerItemClickListener onRecyclerItemClickListener) {
super(itemView);
this.onRecyclerItemClickListener = onRecyclerItemClickListener;
tvId = (TextView)itemView.findViewById(R.id.tvName);
ivUserProfile = (ImageView)itemView.findViewById(R.id.ivProfilePic);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
User user = dataSource.get(position);
int id = v.getId();
onRecyclerItemClickListener.onRecyclerItemClick(user,id);
}
}
}
公共类适配器扩展了RecyclerView。适配器实现了FastScrollRecyclerView.SectionAdapter{
RecyclerItemClickListener上的公共界面{
void onRecyclerItemClick(用户数据,整数id);
}
列出数据源;
私有OnRecyclerItemClickListener OnRecyclerItemClickListener;
私人语境;
public-ActiveBeepsAdapter(列出数据参数、OnRecyclerItemClickListener、OnRecyclerItemClickListener、上下文上下文){
this.dataSource=dataArgs;
this.onRecyclerItemClickListener=onRecyclerItemClickListener;
this.context=上下文;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
//创建新视图
View=LayoutFlater.from(parent.getContext()).flate(R.layout.single\u active\u消息,parent,false);
ViewHolder ViewHolder=新的ViewHolder(视图,onRecyclerItemClickListener);
返回视图持有者;
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
User=dataSource.get(位置);
holder.tvId.setText(user.getId());
毕加索。与(上下文)
.load(user.getProfilePicUrl())
.占位符(R.drawable.bg_徽标)
.错误(R.drawable.bg_徽标)
.transform(新的CircletTransform())
.into(holder.ivUserProfile);
}
@凌驾
public int getItemCount(){
返回dataSource.size();
}
@非空
@凌驾
公共字符串getSectionName(int i){
返回String.valueOf(dataSource.get(i).getId().charAt(0));
}
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私有OnRecyclerItemClickListener OnRecyclerItemClickListener;
用户数据=新用户();
文本视图tvId;
ImageView-ivUserProfile;
公共视图持有者(查看项目视图,OnRecyclerItemClickListener OnRecyclerItemClickListener){
超级(项目视图);
this.onRecyclerItemClickListener=onRecyclerItemClickListener;
tvId=(TextView)itemView.findViewById(R.id.tvName);
ivUserProfile=(ImageView)itemView.findViewById(R.id.ivProfilePic);
}
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
User=dataSource.get(位置);
int id=v.getId();
onRecyclerItemClickListener.onRecyclerItemClick(用户,id);
}
}
}
假设,如果单击了配置文件图像,则视图id应发送到“活动”
还有我的活动
@EActivity
public class ActiveMessage extends AppCompatActivity implements Adapter.OnRecyclerItemClickListener{
@ViewById(R.id.toolbar)
Toolbar toolbar;
@ViewById(R.id.rvactiveMessage)
FastScrollRecyclerView rvmessage;
List<User> allUser;
@ViewById(R.id.toolbar_title)
TextView tv_toolbar;
@AfterViews
protected void init(){
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_drop_down_black_24dp));
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
tv_toolbar.setText("Active Message");
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
allUser = new ArrayList<>();
User user;
String fullName[] = {"ajay","kamal","akhil"};
String id[] = {"its_ajay","its_kamal","its_akhil"};
for(int i=0;i<id.length;i++){
user = new User();
user.setId(id[i]);
user.setFullName(fullName[i]);
allUser.add(user);
}
Adapter adapter = new Adapter(allUser,this,getApplicationContext());
rvmessage.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
rvmessage.setAdapter(activeBeepsAdapter);
}
@Override
public void onRecyclerItemClick(User data,int id) {
if (!Utils.isNetworkAvailable(getApplicationContext())) {
noInternet();
}
// tvName has multiple Implementation
if (id == R.id.tvName){
Log.d("Id",data.getId());
}
}
public void noInternet(){
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.alert_dialog);
dialog.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_active_message);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
@EActivity
公共类ActiveMessage扩展AppCompatActivity实现Adapter.OnRecyclerItemClickListener{
@ViewById(R.id.toolbar)
工具栏;
@ViewById(R.id.rvactiveMessage)
FastScrollRecyclerViewRVMessage;
列出诱惑者;
@ViewById(R.id.toolbar\u标题)
文本视图tv_工具栏;
@后景
受保护的void init(){
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_drop_down_black_24dp));
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
tv_toolbar.setText(“活动消息”);
toolbar.setNavigationOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
onBackPressed();
}
});
allUser=新的ArrayList();
用户;
字符串全名[]={“ajay”、“kamal”、“akhil”};
字符串id[]={“its_ajay”、“its_kamal”、“its_akhil”};
对于(int i=0;i
在适配器onClick方法(而不是id pass视图)中:
正在活动中
在适配器onClick方法(而不是id pass视图)中:
正在活动中
如果要发送视图,请将接口方法参数更改为view,而不是id public interface on RecyclerItemClickListener{void on RecyclerItemClick(用户数据,视图);}如果要发送视图,请将接口方法参数更改为view,而不是id public interface on RecyclerItemClickListener{void onRecyclerItemClick(用户数据,视图);}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
User user = dataSource.get(position);
int id = v.getId();
onRecyclerItemClickListener.onRecyclerItemClick(user,v);
}
@Override
public void onRecyclerItemClick(User data,View view) {
if (!Utils.isNetworkAvailable(getApplicationContext())) {
noInternet();
}
// tvName has multiple Implementation
if (view.getId() == R.id.tvName){
Log.d("Id",data.getId());
}
}