0

그래서 다중 선택 모드 수신기를 구현하는 GridView가 있고 사용자가 항목을 두 드릴 때마다 배경 이미지가 변경됩니다. 길게 탭하면 다중 선택 도구 모음이 나타납니다.getView() 메서드의 onClickListener가 MultiChoiceModeListener()를 뒤집습니다.

그러나 나는 getView()에서 클릭 리스너를 사용했기 때문에 어떻게 든 다른 것을 차단합니다.

어떤 조언 (나는의 getView (에서 리스너를 제거하는 경우), 다른 하나는 잘 작동)?

MultiChoiceListener :

gView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL); 
     checkedPos = new SparseBooleanArray(); 

     gView.setMultiChoiceModeListener(new GridView.MultiChoiceModeListener() { 
      @Override 
      public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { 

       currentArray = gView.getCheckedItemPositions(); 
       int itemCount = gView.getCheckedItemCount(); 

       switch (itemCount){ 
        case 1: 
         mode.setSubtitle("One item selected."); 
         break; 
        default: 
         mode.setSubtitle(itemCount + " items selected."); 
         break; 
       } 
... 

의 getView() :

convertView.setLongClickable(true); 
     final Holder finalHolder = holder; 
     convertView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(!pressed) { 
        finalHolder.img.setBackground(ContextCompat.getDrawable(context, R.drawable.ic_pause_bg)); 
        pressed = true; 
       } 
       else{ 
        finalHolder.img.setBackground(ContextCompat.getDrawable(context, R.drawable.ic_noise_bg)); 
        pressed = false; 
       } 
      } 
     }); 

이 시간 내 주셔서 감사

여기 내 코드입니다!

답변

0

신경 쓰지 마라, 나는 그것을 해결했다. 나는 누군가가 같은 문제에 대한 해결책을 필요로한다면 내 대답을 떠날 것이다. 모든

먼저 대신 코드를 가지고 어디 MultiChoiseModeListener에 대한 가서 GRIDVIEW에 대한) (를 setOnItemClickListener를 호출합니다 의 getView() 방법 청취자 잊어 -> 아이디의를 사용하여 끊임없이 변경하려는 이미지 :

gView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       view.setSelected(true); 

       ImageView image = (ImageView) view.findViewById(R.id.noise_image); //use the id given in your layout 

       if(!itemPressed.get(position)) { 
        image.setBackground(ContextCompat 
          .getDrawable(mContext, R.drawable.ic_running)); 
        itemPressed.put(position,true); 
       } 
       else{ 
        itemPressed.put(position,false); 
        image.setBackground(ContextCompat.getDrawable(mContext,R.drawable.ic_normal)); 
       } 

이렇게하면 두 수신기가 모두 작동합니다. itemPressed

주의 배경 이미지 변경, 어떤 혼란이있을 때 그래서 클릭 된 항목 를 기억하기 위해지도입니다.