本人刚接触android开发,处于看书敲代码还不懂含义的阶段。
Recycle适配器代码如下:想用点击事件中的refresh刷新fragment里的数据,点击按钮就退出。
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
UserModel user = mUserList.get(position);
//本地文件
File documentDir = Environment.getExternalStorageDirectory();
String imgDir = documentDir.getAbsolutePath() + "/" + Const.PACKAGE_NAME + "/" + "dbfiles";
File file = new File(imgDir, user.getImage());
//加载图片
Glide.with(mContext).load(file).into(holder.userphoto);
holder.detailBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 点击事件
UserModel um = mUserList.get(position);
//Toast.makeText(mContext, um.getUsername() + "", Toast.LENGTH_SHORT).show();
UserDetailFragment.refresh(user.getPersonname());//想用refresh方法把数据传递到fragment
}
});
holder.username.setText("姓名:"+user.getPersonname());
holder.sex.setText("性别:"+user.getSex());
holder.nation.setText("民族:"+user.getNation());
holder.age.setText("年龄:"+user.getAge()+"岁");
fragment代码如下:
public class UserDetailFragment extends Fragment {
private static View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.item_userdetail2, container, false);
TextView personname = view.findViewById(R.id.personname);
personname.setText("你好好");
return view;
}
public static void refresh(String Personname) {
TextView personname = view.findViewById(R.id.personname);
personname.setText(Personname);
}
}
调试一下,看看
view.findViewById(R.id.personname);
返回的文本框是否为空
TextView personname = view.findViewById(R.id.personname); 这句话中的view 你从哪里来,你在Fragment中定义了静态常量view,但是没有初始化。我们在写这种类型的事件的时候,一般不写静态方法,而是写接口回调。
大致写法
private ItemClick listener;
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
holder.detailBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 点击事件
UserModel um = mUserList.get(position);
if(listener!=null){
itemClick.onClick(user.getPersonname())
}
}
});
}
interface ItemClick {
void onClick(String s);
}
public void setItemClick (ItemClick listener ){
this.listener=listener}
然后再初始化adapter之后会,调用adapter.setItemClick(new .....)