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

私はそれをうまく処理しました。誰かが同じ問題を解決する必要があるなら、私は答えを残すつもりです。

まずgetViewメソッド(でリスナーを忘れる)方法は、代わりにあなたのMultiChoiseModeListenerのためのコードを持ってどこに行くと、あなたののGridViewためsetOnItemClickListener()を呼び出す - >のIDを使用して常に変更したい画像:

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がクリックされたアイテムの背景画像を変更するときに、 混乱はありません を記憶するために、地図であることを

注意してください。

関連する問題