亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在沒有ListView的ArrayList中添加OnitemClickListener

如何在沒有ListView的ArrayList中添加OnitemClickListener

繁星coding 2023-03-31 09:23:26
我想在 android studio 中制作一個儀表板。我使用兩個 xml 來制作儀表板 main_activity 和 list_item 活動。在編碼會話中,我使用了模型類適配器和主類。public class MainActivity extends AppCompatActivity {ArrayList<DashModel> dashModelArrayList;DashAdapter dashAdapter;private RecyclerView recyclerView;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    recyclerView = findViewById(R.id.rv1);    dashModelArrayList = new ArrayList<>();    String heads[] = {"Jobs", "My Profile", "Messages", "Applied Jobs", "Resume", "Settings"};    String subs[] = {"12 new jobs found", "75% complete", "2 new messages", "3 applies jobs", "Edit resume", "Set preferences"};    int images[] = {R.drawable.find_jobs, R.drawable.profile, R.drawable.messages, R.drawable.applied_jobs,            R.drawable.resume, R.drawable.settings};    for (int count = 0; count < heads.length; count++) {        DashModel dashModel = new DashModel();        dashModel.setHead(heads[count]);        dashModel.setSub(subs[count]);        dashModel.setImage(images[count]);        dashModelArrayList.add(dashModel);        //this should be retrieved in our adapter    }    recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(), 2));    dashAdapter = new DashAdapter(dashModelArrayList);    recyclerView.setHasFixedSize(true);    recyclerView.setAdapter(dashAdapter);}}如何在此處添加 onItemclickListener?我希望并希望在圖標中添加 OnItemclickListener,但我不能也不知道如何添加。
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

要為 RecyclerView 創建一個,onClickListener你必須創建一個類來實現RecyclerView.OnItemTouchListener


import android.support.v7.widget.*;

import android.view.*;

import android.content.*;


public class RecyclerViewTouchListener implements RecyclerView.OnItemTouchListener {


    private GestureDetector gestureDetector;

    private ClickListener clickListener;


    public RecyclerViewTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {

        this.clickListener = clickListener;

        gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {

            @Override

            public boolean onSingleTapUp(MotionEvent e) {

                return true;

            }


            @Override

            public void onLongPress(MotionEvent e) {

                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());

                if (child != null && clickListener != null) {

                    clickListener.onLongClick(child, recyclerView.getChildPosition(child));

                }

            }

        });

    }


    @Override

    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {


        View child = rv.findChildViewUnder(e.getX(), e.getY());

        if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {

            clickListener.onClick(child, rv.getChildPosition(child));

        }

        return false;

    }


    @Override

    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }


    @Override

    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {


    }


    public interface ClickListener{


        public void onClick(View view,int position);

        public void onLongClick(View view,int position);

    }

}

之后,您可以將其附加到您的設備上RecyclerView以收聽點擊。


recyclerView.addOnItemTouchListener(new RecyclerViewTouchListener(getActivity(), recyclerView, new RecyclerViewTouchListener.ClickListener(){


        @Override

        public void onClick(View view, int position)

        {

            // TODO: Implement this method



        }


        @Override

        public void onLongClick(View view, int position)

        {

            // TODO: Implement this method

        }                                           

    }));


查看完整回答
反對 回復 2023-03-31
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號