2016-09-12 1 views
0

을 제거하고 싶은 미리보기 이미지를 클릭하면이 부분은 recyclerview이고 onClicklistener이며 작동하지만이 효과는 목록의 8 개 항목마다 있으므로 모든 8 번째 축소판이 사라집니다. .8 개의 항목마다 OnClick 재생 목록보기 효과

내 어댑터 : 당신은 어떤 아이디어가 있다면

final List<Bar> bars = application.getAllBars(); 
     int topBarsSize = application.getTopBars().size(); 

     BarViewHolderClicks clickListener = new BarViewHolderClicks() { 
      @Override 
      public void onLayoutClick(int position) { 
       SMSLogger.i("on layout click for position " + position); 
       Intent intent = new Intent(MainActivity.this, BarDetailsActivity.class); 

       intent.putExtra(IntentConstants.SELECTED_BAR_POSITION, position); 
       startActivity(intent); 
      } 

      @Override 
      public void onThumbnailClick(int position) { 
       SMSLogger.i("on thumbnail click for position " + position); 
       barListAdapter.changeStatusToWatched(position); 
       Intent intent = new Intent(MainActivity.this, PlayVideoActivity.class); 
       intent.putExtra(IntentConstants.SELECTED_BAR_POSITION, position); 
       startActivity(intent); 
      } 
     }; 

     barListAdapter = 
       new BarListAdapter(bars, R.layout.bar_item_layout, this, clickListener); 

     recViewBars.setAdapter(barListAdapter); 

하는 문제는 그들 :)

+0

onThumbnail 왜 다른 활동을 시작 하시겠습니까 ?? 정확한 요구 사항은 무엇입니까? –

+0

이것은 수입품이 아닙니다. 막대의 이름만으로 새로운 활동이 열립니다. 특별한 것은 없습니다. – user6822028

답변

0

을 듣고 좋은 것 :

public class BarListAdapter extends RecyclerView.Adapter<BarListAdapter.BarListViewHolder> { 

    private List<Bar> bars; 
    private int rowLayout; 
    private Context context; 
    private BarViewHolderClicks clickListener; 

    public BarListAdapter(List<Bar> bars, int rowLayout, Context context, BarViewHolderClicks clickListener) { 
     this.bars = bars; 
     this.rowLayout = rowLayout; 
     this.context = context; 
     this.clickListener = clickListener; 
    } 

    @Override 
    public BarListAdapter.BarListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false); 
     return new BarListViewHolder(view, clickListener); 
    } 

    @Override 
    public void onBindViewHolder(final BarListViewHolder holder, final int position) { 
     holder.barNameView.setText(bars.get(position).getName()); 
     holder.position = position; 
     holder.lastVideoTimeView.setText(bars.get(position).getCaptureTime()); 
     if (bars.get(position).isWatched()) { 
      holder.thumbnailView.setVisibility(View.GONE); 
     } else { 
      setThumbnail(holder, position); 
     } 
    } 

    public void changeStatusToWatched(int position){ 
     bars.get(position).setWatched(true); 
     notifyDataSetChanged(); 
    } 

    private void setThumbnail(BarListViewHolder holder, int position) { 
     Picasso.with(context).load(bars.get(position).getThumbnailUrl()) 
       .placeholder(R.drawable.webcam).error(R.drawable.webcam) 
       .resize(50, 50).centerCrop().into(holder.thumbnailView); 
    } 

    @Override 
    public int getItemCount() { 
     return bars.size(); 
    } 

    public static class BarListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     public BarViewHolderClicks clickListener; 
     View itemLayout; 
     TextView barNameView; 
     TextView lastVideoTimeView; 
     RoundedImageView thumbnailView; 
     CheckBox barCheckbox; 
     int position; 

     public BarListViewHolder(View v, BarViewHolderClicks listener) { 
      super(v); 
      this.clickListener = listener; 
      barNameView = (TextView) v.findViewById(R.id.bar_name); 
      thumbnailView = (RoundedImageView) v.findViewById(R.id.video_thumbnail); 
      itemLayout = v.findViewById(R.id.item_lahyout); 
      lastVideoTimeView = (TextView) v.findViewById(R.id.last_video_time); 
      itemLayout.setOnClickListener(this); 
      thumbnailView.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      if (v instanceof ImageView) { 
       clickListener.onThumbnailClick(position); 
      } else { 
       clickListener.onLayoutClick(position); 
      } 
     } 
    } 
} 

그리고 여기가 활동에 사용입니다 축소판 이미지를 숨길 때 onBindViewHolder() 메서드 내에서 코드 사용

holder.thumbnailView.setVisibility(View.GONE); 

Recyclerview는 매번 새 레이아웃 인스턴스를 사용하지 않고 재활용 된 레이아웃을 다시 사용합니다. 그래서 공연/숨기기로 연주해야합니다.

미리보기 이미지를 레이아웃에 설정하고 이미지를 표시하거나 숨기 만하면됩니다.

if (bars.get(position).isWatched()) { 
    holder.thumbnailView.setVisibility(View.GONE); 
} else { 
    holder.thumbnailView.setVisibility(View.VISIBLE); 
} 

나는 그것이 당신을 도울 것입니다.

그렇지 않으면 알려주세요.

+0

그게 전부입니다! 고맙습니다! – user6822028

+0

그게 좋습니다! 가장 환영 !! –

+0

대단히 감사합니다 :) – user6822028

관련 문제