2012-01-06 16 views
2

を選択することができない私はpopupwindowリストビューを持っていレイアウトを設定し、私はpopupwindow.setFocusale(false);を設定し、その後リストビュー、 に"android:focusable="true""属性を追加し、私はをクリックしてくださいリストビューポップアップウィンドウ、リストビューのアイテムは選択できません。 誰でも解決策を教えてください。 ありがとうございます!アンドロイド:PopupWindowでのListViewは

+0

項目のどのような種類を拡張あなたのリストビューにはありますか? それを見てください:http://code.google.com/p/android/issues/detail?id=3414&can=1&q=listview&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars また、setClickableで試してみてくださいあなたのリストビューに。 –

+0

私は同じ問題を抱えています。質問は選択できないということではなく、ListViewがスクロールされるまで表示されません。それは確かに選択されています。 – m0skit0

答えて

0

なぜpopupwindowフォーカスをfalseにしていますか?それがあなたのUIに影響するかどうかは、focussable.iを残した場合、ListViewがフォーカスを得ていないことが推測されます。

+0

ええ、popupwindowのフォーカスがlistview.Iに設定されているのは、popupwindowの "setTouchInterceptor(...){... MotionEvent.ACTION_OUTSIDE //をオーバーライドしたいのでfalseに設定したことを知っています//このattrのために、私はfocusable falseを設定する必要があります。 ..} " –

+1

私はここにあなたがいなくなっています... set focus = falseとsetTouchInterceptor()を使用している場合は関係がありますか?はい、申し訳ありませんが、私は説明してくれません。いくつかのコードを投稿してみると、問題がどこにあるか調べることができます。 – dcool

+0

私たちが正確に理解できるように、いくつかのコードを投稿してください –

0

私は同じ問題を抱えていたし、私の場合にはPopupWindow.setFocusble(false)が必要であった(とListPopupWindowを使用して拡張を含むプロジェクトすでに使用ベースPopupWindowの機能で多くのものとして私の場合は解決策ではありませんでした)。

誰かが同じ状況でバグdiscusson hereに基づいて、回避策のようなものがある場合(ポスト#9)

主なアイデアは、我々は手動でonItemClick()を誘発することができるようにListViewの階層がまだタッチイベントを受信して​​いることです。

しかし、このアプローチは現実のタッチハンドリングと100%同一ではありません(行をタップしている間に選択の輝きがないように)これは私にとって現時点ではかなりうまくいっています。

誰かがこの問題のより正確な解決策を持っている場合は、共有してください。

だから、ここsetFocusable(false)あるPopupWindowListViewで使用することができ、完全なAdapterのコードは次のとおりです。

プライベートクラスCustomAdapterはArrayAdapter {

private LayoutInflater mInflater; 
private ListView mOwningListView; 

public CustomAdapter(Context context, List<String> objects, ListView listView) { 
    super(context, android.R.layout.simple_list_item_1, objects); 
    mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mOwningListView = listView; 
} 


@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     convertView = mInflater.inflate(R.layout.font_pick_row, null); 
    } 
    // this is the key point of workaround 
    convertView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      /* 
      * as every row is still receiving their touches 
      * we can use this to manually trigger onItemClick 
      * since it doesn't firing in popupWindow.setFocusable(false) 
      */ 
      mOwningListView.getOnItemClickListener().onItemClick(mOwningListView, v, position, getItemId(position)); 

     } 
    }); 
    //... other stuff 
    return convertView; 
} 

}

関連する問題