我的片段上有 .globl give_both
.type give_both, @function
give_both:
.LFB0:
.file 1 "ab.c"
.loc 1 7 0
.cfi_startproc
.LVL0:
.loc 1 7 0
xorl %edx, %edx # D.2139
movq %rdi, %rax # x, x
movb %sil, %dl # y, D.2139
ret
.cfi_endproc
,显示我从FTP服务器加载的某些文件。
我正在尝试为每个项目设置RecyclerView
,因此当点击它时,将显示onClickListener
,用户可以在其中选择是下载还是打开文件。
我的问题是:
我需要向我的对话框发送两件事:
DialogFragment
无关,唯一的问题是我无法访问setTargetFragment()
中的片段。RecyclerView.ViewHolder
中的数据集,因为它的静态和我的数据集不是。 为何选择ViewHolder
如果有更好的地方,我会很高兴听到。我在RecyclerView.ViewHolder
内尝试的原因是它可以访问该位置(被点击的项目)。我已经考虑过在RecyclerView.ViewHolder
上执行此操作,但是我可以访问数据集,但不能访问该位置。
我的适配器代码:
onBindViewHolder()
非常感谢帮助,谢谢。
答案 0 :(得分:4)
所以我找到了一个解决方案,我在OnClickListener
上创建了一个带有匹配参数的自定义onBindViewHolder()
,并将其设置为ViewHolder
:
的 ViewHolder:强>
public static class ViewHolder extends RecyclerView.ViewHolder {
private final TextView nameTextView;
private final TextView infoTextView;
private final ImageView imageView;
public final String TAG = "FILES_VH";
private View v;
public ViewHolder(View v) {
super(v);
this.v = v;
nameTextView = (TextView)v.findViewById(R.id.fileNameTextView);
infoTextView = (TextView)v.findViewById(R.id.fileInfoTextView);
imageView = (ImageView)v.findViewById(R.id.fileImageView);
}
public void setOnClickListener(View.OnClickListener listener){
v.setOnClickListener(listener);
}
}
我的自定义收听者:
private class downloadOnClickListener implements View.OnClickListener{
RemoteFilesFragment fragment;
String file;
public downloadOnClickListener(RemoteFilesFragment fragment, String file){
this.file = file;
this.fragment = fragment;
}
@Override
public void onClick(View v) {
Log.d(TAG, "File " + file + " clicked.");
DownloadDialog dialog = DownloadDialog.newInstance(file);
dialog.setTargetFragment(fragment, 1);
Log.e(TAG, fragment == null ? "fragment null" : "fragment not null");
FragmentManager fm = fragment.getActivity().getSupportFragmentManager();
dialog.show(fm, "Download");
}
}
并在onBindViewHolder()上添加以下代码:
holder.setOnClickListener(new downloadOnClickListener(fragment, dataset[position].getName()));