2017-12-31 64 views
0

私はリストビューを持っていて、各セルには7つのボタンがあるRelativeLayoutがあります。 リストがスクロールされる前に、すべてのボタンが表示されているすべてのlistViewアイテムに対してうまく機能しますが、listViewがスクロールされた後、クリックできないアイテム(クリックしたアイテムのどのボタンにも関係なく)別のスクロールの後、同じアイテムをクリック可能にすることができます。 私はスクロールした後に通常起こることに気づきました(アイテムはクリック可能ではありません)。 ボタンが連続して数回(遅れているように)トリガーされることはめったにありません。しかし、通常、成功しなかったいくつかのクリックの後に起こることはありません。listViewのボタンは常にトリガーされない

私のオリジナルコードでは、(それぞれlistView Itemの)RelativeLayoutsのarrayListを作成し、arrayListをアダプタに配置しました。 7つのボタンごとに(セルごとに)、私はarraylistの自分の位置に対応する7のIDを設定します。 このようにして、メインクラスでOnClickイベントを実装しました。

for (int i = 0; i < EXPEND_BUTTONS.length; i++) { 
      if (view.getId() == EXPEND_BUTTONS[i]) { 
       handleEmojiPanel(i); 
       break; 
      } 
      if (view.getId() == BUTTONS[i] || view.getId() == IMAGES[i]) { 
       ShowTopItem item = new ShowTopItem(getActivity(), i); 
       item.show(); 
       break; 
      } 
     } 

ため、問題の私は、コードを変更: はここに(7のうち)3つのボタンがあります。 I(2つのボタンのみ)GetViewメソッドでアダプタ自体にボタンのOnClickイベントを扱う:

public View getView(final int position, View convertView, ViewGroup parent) { 
     pos = position; 
     Button btn = (Button) listOfObjects.get(position).getChildAt(0); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       ShowTopItem item = new ShowTopItem(getActivity(), position + listChosen); 
       item.show(); 
      } 
     }); 
     Button imageBtn = (Button) listOfObjects.get(position).getChildAt(2); 
     imageBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       ShowTopItem item = new ShowTopItem(getActivity(), position + listChosen); 
       item.show(); 
      } 
     }); 
     return listOfObjects.get(position); 
    } 

私は同じ結果を有します。何も変わっていません。

私はインターネット全体を見てきましたが、私はそのような問題に遭遇した唯一の人だと思われます。

誰でもこの問題が何であるか知っていますか? 他のコードが必要な場合は、お気軽にお問い合わせください。

答えて

0

私は理由を見つけられませんでしたが、ListViewをScrollViewに変更しました。 ListViewに何らかのバグがあるかもしれませんが、この場合、なぜ私はそれについて何の不満も見つけられませんでした。 とにかく、ScrollViewで完璧に動作します。

関連する問題