2016-10-13 9 views
0

ここでパターンを理解するのに問題があります。私はビューとアダプタが混在している。私の論理はどこが間違っていますか?RecyclerViewのクリック可能なアイコン

クリック可能なマーカーに似たアイコンを取得しようとしています。チェックされている場合はtrueに設定され、チェックされている場合はfalseに戻ります。 trueまたはfalseに設定されていても、ビューは自動的に更新されません。これを取得するには

public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{ 

     public ImageView iconImageView; 
     public TextView iconTextView; 

     public MyViewHolder(final View itemView) { 
      super(itemView); 

      iconImageView = (ImageView) itemView.findViewById(R.id.myRecyclerImageView); 
      iconTextView = (TextView) itemView.findViewById(R.id.myRecyclerTextView); 
// set click event 
      itemView.setOnClickListener(this); 
      iconTextView.setOnClickListener(this); 
// set long click event 
      iconImageView.setOnLongClickListener(this); 
     } 

     // onClick Listener for view 
     @Override 
     public void onClick(View v) { 

      if (v.getId() == iconTextView.getId()){ 
       Toast.makeText(v.getContext(), "ITEM PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show(); 
      } else { 
       Toast.makeText(v.getContext(), "ROW PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show(); 
      } 
     } 


     //onLongClickListener for view 
     @Override 
     public boolean onLongClick(View v) { 

      final AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); 
      builder.setTitle ("Hello Dialog") 
        .setMessage ("LONG CLICK DIALOG WINDOW FOR ICON " + String.valueOf(getAdapterPosition())) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 

      builder.create().show(); 
      return true; 
     } 
    } 

:あなたの代わりにrecyclerView内部onBindViewHolder()

+0

onBindViewHolderではなく、ViewHolderクラスでtitleやdescなどのビューをバインドする必要があります。 – FarshidABZ

答えて

0

あなたがビューのIDと一致するアイテムがクリックされた.getId()== yourViewItem.getId()

0

複数のonClickイベントのViewHolderクラスでsetOnclickListener()を設定する必要が

public class MyPojo { 

String title; 
String desc; 
int image; 
boolean isChecked; 

マイアダプタクラス〜

@Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 
    // - get element from your dataset at this position 
    // - replace the contents of the view with that element 
    TextView title = (TextView) holder.mView.findViewById(R.id.textView); 
    TextView desc = (TextView) holder.mView.findViewById(R.id.textView2); 
    final ImageView image = (ImageView) holder.mView.findViewById(R.id.imageView); 

      title.setText(pojos.get(position).getTitle()); 
      desc.setText(pojos.get(position).getDesc()); 
    if (!(pojos.get(position).isChecked())) { 
     image.setImageResource(pojos.get(position).getImage()); 
    } else { 
     image.setImageResource(R.mipmap.ic_launcher); 
    } 

    image.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      image.setImageResource(R.mipmap.ic_launcher); 
      //todo Where do I set my is clicked ? 
      if (pojos.get(position).isChecked) { 
       pojos.get(position).setChecked(false); 
       //image.setImageResource(R.mipmap.ic_launcher); 

      }else{ 
       pojos.get(position).setChecked(true); 
       //image.setImageResource(pojos.get(position).getImage()); 


      } 

     } 
    }); 

} 
関連する問題