你好,我很难实现这一点,我没有找到任何例子来做这件事,我自己也达到了这一点,但是我被困住了!任何帮助都将不胜感激。
public class JobsFragment extends Fragment{
private List<JobsLists> jobsLists;
private RecyclerView recycle;
private FirebaseFirestore fb;
private FirestoreRecyclerAdapter<JobsLists, JobsViewHolder> adapter;
private static final String TAG ="" ;
public JobsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View jobsView = inflater.inflate(R.layout.fragment_jobs, container, false);
recycle = jobsView.findViewById(R.id.recycle);
recycle.setLayoutManager(new LinearLayoutManager(this.getActivity()));
fb = FirebaseFirestore.getInstance();
Query query =
recycle.setItemAnimator(new DefaultItemAnimator());
FirestoreRecyclerOptions<JobsLists> options = new FirestoreRecyclerOptions.Builder<JobsLists>()
.setQuery(query, JobsLists.class)
.build();
adapter = new FirestoreRecyclerAdapter<JobsLists, JobsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull JobsViewHolder holder, final int position,@NonNull JobsLists jobsmodel) {
jobsmodel = jobsLists.get(position);
holder.setTitle(jobsmodel.getTitle());
holder.cv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
// Intent intent = new Intent(context, JobView.class);
// intent.putExtra("title", .get(position));
// intent.putExtra("description", .get(position));
// context.startActivity(intent);
Toast.makeText(context,"clicked="+ jobsmodel.getTitle(position)),Toast.LENGTH_SHORT).show();
}
});
}
@NonNull
@Override
public JobsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.custom_card, parent, false);
return new JobsViewHolder(view);
}
};
recycle.setAdapter(adapter);
return jobsView;
}
private class JobsViewHolder extends RecyclerView.ViewHolder {
private View view;
private CardView cv;
JobsViewHolder(final View itemView) {
super(itemView);
view = itemView;
cv = itemView.findViewById(R.id.job_post);
}
private TextView ti;
public void setTitle(String name) {
ti = view.findViewById(R.id.title);
ti.setText(name);
}
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
if (adapter != null) {
adapter.stopListening();
}
} }而且,我也不能像许多例子所建议的那样,将params传递给片段构造器!我见过它们实现OnclickListener的例子,但是我不知道为什么它在我的class.Please中不起作用,给我一些指导,我正在努力学习!
发布于 2018-04-14 22:30:26
将Toast.makeText(context,"clicked="+jobsmodel.getTitle(position)),Toast.LENGTH_SHORT).show()替换为Toast.makeText(context,"clicked="+jobsmodel.getTitle(),Toast.LENGTH_SHORT).show();
发布于 2018-04-14 21:15:56
我总是在holder类的构造函数下实现onclickListener,因此,尝试在JobsViewHolder(final )下实现这一点。
cv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Toast.makeText(itemView.getContext(),"clicked="+jobsmodel.getTitle(position)),Toast.LENGTH_SHORT).show();
}
});https://stackoverflow.com/questions/49836115
复制相似问题