2017-02-09 154 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 –