首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段OnclickListener RecycleView

片段OnclickListener RecycleView
EN

Stack Overflow用户
提问于 2018-04-14 20:54:45
回答 2查看 55关注 0票数 2

你好,我很难实现这一点,我没有找到任何例子来做这件事,我自己也达到了这一点,但是我被困住了!任何帮助都将不胜感激。

代码语言:javascript
复制
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中不起作用,给我一些指导,我正在努力学习!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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();

票数 1
EN

Stack Overflow用户

发布于 2018-04-14 21:15:56

我总是在holder类的构造函数下实现onclickListener,因此,尝试在JobsViewHolder(final )下实现这一点。

代码语言:javascript
复制
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();
                    }
                });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49836115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档