2017-02-09 82 views
0

我有一個播放按鈕的歌曲列表視圖 Like this .. 現在我需要點擊這個播放按鈕的基礎上,他們的立場,並點擊更改後選擇一個暫停按鈕..但我必須在我的活動內沒有在適配器(getView)中做到這一點..任何建議!?處理點擊圖像按鈕的活動列表視圖

lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     //productList is my ArrayList<Product> and 
     //Product is my Serializable class that holds 
     // items that is in mysql database 
     Product selectedProduct = productList.get(position); 


    } 
}); 
+1

請具體說明和更新你的問題 –

+1

我想我的追求離子是比特定的 – Mehran

回答

2

首先,使用recyclerview而不是listview。此後,在onBindViewHolder方法適配器內部處理由addind點擊收聽點擊,持有人:

holder.setOnClickListener(...); 

接口:

public interface OnItemClicked{ 
    void onItemClicked(/*HERE YOUR VARIABLES TO PASS FROM ADAPTER TO MAINACTIVITY); 
} 

適配器:

OnItemClicked listener; 

public void setOnItemClickedListener(OnItemClicked listener){ 
    this.listener = listener; 
} 

向下,上onBindViewHolder方法:

@Override 
public ViewHolder onBindViewHolder(... params){ 
    ...your code 

    holder.setOnClickListener(new View.OnClickListener{ 
     @Override 
     public void onClick(View v){ 
      if(listener != null) 
       listener.onItemClicked() 
     } 
    }); 
} 

,最後,在您的MainActivity:

adapter.setOnItemClickedListener(new OnItemClicked ...) <- here will pop up autocomplete 
+0

我剛纔說我需要在我的活動內做這個 – Mehran

+0

好吧,然後,創建一個自定義接口,並添加一個監聽器。讓我編輯我的帖子,告訴你如何。 –

+0

好的,謝謝隊友 – Mehran

-1

使用這種在您的活動

  1. 聲明RecyclerView並設置佈局管理器

  2. 設置適配器

view.setAdapter(mAda PTER);

  • 上點擊執行
  • v

    view.addOnitemTouchListener(
    
    new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() { 
    
            @Override 
            public void onItemClick(View view, int position) { 
    
             //do something 
            } 
           }) 
         ); 
    

    RecyclerItemClickListener:

    public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { 
        private OnItemClickListener mListener; 
    
        public interface OnItemClickListener { 
         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; 
          } 
         }); 
        } 
    
        @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) { 
    
        } 
    } 
    
    +0

    看起來像從[這裏](http://sapandiwakar.in/recycler-view-item-click-handler/)複製,你可以做到這一點,但提到的來源! –

    +0

    原因'RecyclerItemClickListener'是一個自定義類。不是RecyclerView API的一部分。 –

    +0

    我用它,但我不知道源參考...順便thanq –

    相關問題