3 ارسال در این موضوع قرار دارد

بعضی از دوستان برای انجام onLongClick و onClick در recyclerView دچار مشکل میشن.قصد من در این آموزش انجام این اعمال در recyclerView  هستش.

برای این کار ابتدا باید یک کلاس جداگانه بنویسیم به صورت زیر:

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
    private OnItemClickListener mListener;
    private OnItemLongClickListener mLongListener;

    public interface OnItemClickListener {
        public void onItemClick(View view, int position);
    }

    public interface OnItemLongClickListener {
        public void onItemClick(View view, int position);
    }

    GestureDetector mGestureDetector;

    public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });
    }


    public RecyclerItemClickListener(Context context, OnItemLongClickListener listener) {
        mLongListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });
    }



    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}

 

 

بعد از اضافه کردن کلاس بالا حالا باید ازش استفاده کنیم به صورت زیر :

 

متد onLongClick:

recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), attachFileRecyclerView, new RecyclerTouchListener.ClickListener() {
            @Override
            public void onClick(View view, int position) {

            }

            @Override
            public void onLongClick(View view, final int position) {
                
				. . .
				
            }
        }));

 

 

متد onClick:

recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                
				. . .
            }
        }));

 

1 کاربر پسند دیده است

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام. خیلی ممنون بابت مطلب خوبتون.

سوال من اینه که در مورد ExpandableListView استفاده از ContextMenu به چه صورتیه؟

ممنون میشم راهنمایی کنید.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام

پس از تنظیم آداپتور خود به از کد زیر استفاده کنید:

setListAdapter(expListAdapter);
            registerForContextMenu(getExpandableListView());

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط ali5250
      سلام ، من برای ساخت Endless RecyclerView طبق این اموزش :
      https://stackoverflow.com/questions/37004131/implementing-endless-recyclerview
      به مشکل برخورم ، مشکلی که دارم اینه که نمیدونم ادپتر رو چطوری باید ست کنم و اطلاعات هر سطر رو بهش بدم و بصورت کلی متوجه نشدم چطور باید از این کد استفاده کنم ممنون میشم راهنمایی کنید .
    • توسط Omid Zakeri
      RecyclerViewFastScroller یک ویجت است که می توان از آن برای پیمایش سریع استفاده کرد.

       
      RecyclerViewFastScroller-master.zip
    • توسط nima1382na
      با سلام خدمت تمام اساتید عزیز
      من ی سوال داشتم 
      من تو برنامم اومدم و cardview هام رو قرار دادم تو recyclerview ام . 
      حالا میخوام بدونم چطوری باید کاری بکنم ک وقتی روی هر کدوم از این cardview ها کلیک شد بره به یک صفحه دیگ ؟ 
      ممنون میشم کمک کنید استادی عزیز 
    • توسط Omid Zakeri
      RecyclerView بسیار شبیه ListView در اندروید است. هر دو برای نمایش لیست در برنامه اندروید مورد استفاده قرار می گیرند، اما در بعضی موارد در مقایسه با یکدیگر تفاوت دارند. ListView در مقایسه با RecyclerView تا حدودی کندتر است. RecyclerView برخی از سفارشی سازی های اضافی را که ListView ارائه نمی کند فراهم می کند. RecyclerView در طراحی آیتم ها لیست ها در اندروید معرفی شده است. RecyclerView می تواند عملکرد نرم افزار را با بازیابی دیدگاه ها برای نمایش اقلام ردیف بهینه سازی کند، زیرا از هر نمایشگر برای نمایش هر آیتم لیست استفاده می کند که ListView هر بار که آیتم لیست قابل مشاهده است، نمای جدید را ایجاد می کند.
      ListView برخی از اقلام لیست را محدود می کند، در حالی که RecyclerView ابزار خاصی برای طراحی آیتم لیست فراهم می کند. ما همچنین می توانیم بگوییم که RecyclerView نسخه جدید ListView در اندروید است. ListView لیست سفارشی سازی لیست را با کمک منابع drawable فراهم می کند اما سفارشی سازی آن برای مثال محدود می شود. ما می توانیم از itemable برای item list که برای همه موارد در لیست استفاده می شود استفاده کنیم، نمی توانیم سفارشی سازی یک آیتم لیست خاص را ارائه دهیم. در حالی که ابزار ItemDecoration recyclerview، سفارشی کردن طراحی خاص و طرح بندی طرح برای یک آیتم لیست خاص را فراهم می کند. 
      DividerItemDecoration verticalDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL); Drawable verticalDivider = ContextCompat.getDrawable(getApplicationContext(), R.drawable.myshape); verticalDecoration.setDrawable(verticalDivider); recyclerView.addItemDecoration(verticalDecoration); DividerItemDecoration horizontalDecoration = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL); Drawable horizontalDivider = ContextCompat.getDrawable(getApplicationContext(), R.drawable.myshape); horizontalDecoration.setDrawable(horizontalDivider); recyclerView.addItemDecoration(horizontalDecoration);  
    • توسط mostafa5709
      سلام من با استفاده از کدهای زیر یک لیست بی پایان با ریسایکر ویو ساختم ولی مشکل اینجاس زمانی که ایتم ها تموم  میشه دیگه ادامه نده و اخری رو نشون بده ولی در این حالت زمانی که ایتم اخر نمایش داده شد 
      صفحه ای خالی رو نشون میده
      scat_recycles.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); } @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { int totalItemCount = mLayoutManager.getItemCount(); int lastVisibleItem = mLayoutManager.findLastVisibleItemPosition(); if (totalItemCount > 1) { if (lastVisibleItem >= totalItemCount - 1) { // End has been reached // do something Limit += 8; new home_agahi3_server(getActivity().getApplicationContext(), getActivity(), state_id, "1",Limit + "" ).execute(); } } } });  

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل