为了账号安全,请及时绑定邮箱和手机立即绑定

ItemClickListener 在带有 onclick 的 Fragment

ItemClickListener 在带有 onclick 的 Fragment

哆啦的时光机 2021-12-01 15:19:12
我一直在关注本教程:教程 使用 onclick 制作 json recyclerviewer,但我想使用 Fragments 而不是活动。在 onClick 之前,我已经弄清楚了一切。我的问题是setOnItemClickListener没有占用我的getActivity() 我已经尝试了很多,但我就是看不到亮光。如果有人可以帮助我,那将是非常棒的!我唯一真正的问题是 getActivity 在以下位置给出了一条红线:fNieuwsAdapter.setOnItemClickListener( getActivity() );NieuwsFragment.java    import android.content.Intent;    import android.os.Bundle;    import android.support.v4.app.Fragment;    import android.support.v4.app.FragmentActivity;    import android.support.v7.widget.LinearLayoutManager;    import android.support.v7.widget.RecyclerView;    import android.view.LayoutInflater;    import android.view.View;    import android.view.ViewGroup;    import android.widget.AdapterView;    import com.android.volley.Request;    import com.android.volley.RequestQueue;    import com.android.volley.Response;    import com.android.volley.VolleyError;    import com.android.volley.toolbox.JsonObjectRequest;    import com.android.volley.toolbox.Volley;    import org.json.JSONArray;    import org.json.JSONException;    import org.json.JSONObject;    import org.jsoup.Jsoup;    import java.util.ArrayList;    public class NieuwsFragment extends Fragment implements NieuwsAdapter.OnItemClickListener {        public static final String EXTRA_URL = "nieuwsImageUrl";        public static final String EXTRA_HEADING = "nieuwsHeading";        public static final String EXTRA_CONTENT = "nieuwsContent";        private RecyclerView fNieuwsRecyclerView;        private NieuwsAdapter fNieuwsAdapter;        private ArrayList<NieuwsItem> fNieuwsList;        private RequestQueue fNieuwsQueue;
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

你不能使用NieuwsAdapter.setOnItemClickListener(getActivity());,除非你的活动实现了OnItemClickListener 接口,但我看到你的片段实现了OnItemClickListener,所以你可以像这样使用片段:


fNieuwsAdapter.setOnItemClickListener(NieuwsFragment.this);

顺便说一下,您通过意图发送数据:


detailIntent.putExtra(EXTRA_URL, clickedItem.getImageUrl());

detailIntent.putExtra(EXTRA_HEADING, clickedItem.getHeading());

detailIntent.putExtra(EXTRA_CONTENT, clickedItem.getContent());

您必须使用相同的参数获取它们(删除“”):


 String imageUrl = intent.getStringExtra(EXTRA_URL);

 String creatorName = intent.getStringExtra(EXTRA_HEADING);

 String likeCount = intent.getStringExtra(EXTRA_CONTENT);

希望这可以帮助


查看完整回答
反对 回复 2021-12-01
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

改变


public NieuwsAdapter(Context context, ArrayList<NieuwsItem> nieuwslist) {

        NieuwsContext = context;

        NieuwsList = nieuwslist;

    }


public NieuwsAdapter(Context context, ArrayList<NieuwsItem> nieuwslist, OnItemClickListener mOnClickListener) {

        this.NieuwsContext = context;

        this.NieuwsList = nieuwslist;

        this.NieuwsListener = mOnClickListener;

    }

和这个


itemView.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    if (NieuwsListener != null) {

                        int position = getAdapterPosition();

                        if (position != RecyclerView.NO_POSITION) {

                            NieuwsListener.onItemClick(position);

                        }

                    }

                }

            });

改成


itemView.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                   NieuwsListener.onItemClick(int position); 

                }

            });

然后在片段中你可以这样做


fNieuwsAdapter = new NieuwsAdapter(getActivity(), fNieuwsList,new NieuwsAdapter.OnItemClickListener() {

        @Override

        public void onItemClick(int position)

        {

            //DoSomethingHere

        }

  });


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信