2015-12-11 6 views
11

私はリストビューを持っている私のページにポップアップを持っています。私は、別のXMLでポップアップのデザインを作成し、メインページのいくつかのボタンをクリックしてロードしています。ポップアップには、画像とテキストビューを持つ各行のリストビューがあります。私はアンドロイド4.1のリストビューで行の選択を取得することができませんが、それは5.0で動作しています。誰も私に解決策を提案できますか? リストビュー:4.1のポップアップでlistviewの行を選択できませんでしたが、android 5.0で動作しています

<ListView android:id="@+id/lstSites" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fastScrollEnabled="true" 
     android:layout_margin="5dp" 
     android:descendantFocusability="blocksDescendants"></ListView> 
</LinearLayout> 

ListView項目:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false"> 
<ImageView 
    android:id="@+id/thumbImage" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:layout_marginRight="10dp" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 
<TextView 
    android:id="@+id/tvSite" 
    android:textSize="20dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:text="Name" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 

は、行のクリックのリスナーを追加:

lstSiteMenu = (ListView) popupView.findViewById(R.id.lstSites); 

      adapter = new MenuItemsAdapter(SiteActivity.this, arrMenu); 
      // Attach the adapter to a ListView 
      lstSiteMenu.setAdapter(adapter); 
      lstSiteMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
             final int position, long id) { 
      } 
+0

logcatでエラーからこれらのプロパティを削除しますか?あなたが選択された行を言ったときにonItemClickが機能していないか、ポジションを取得していないことを意味していましたか? – virendrao

+1

この 'android:descendantFocusability =" blocksDescendants "を' ListView'から削除します。 – Piyush

答えて

0

あなたのListViewからandroid:descendantFocusability="blocksDescendants"を削除する必要があります。

また、とandroid:focusableInTouchMode="false"は、ImageViewTextViewの行レイアウトから削除してください。

リスト項目をクリック可能になっている、それはフォーカス

1

を取得無効にテキストとImageViewのから、リストビューからandroid:descendantFocusability="blocksDescendants"

android:focusable="false" 
android:focusableInTouchMode="false" 

このプロパティを削除しています。

、これはサンプルの例でみてください、

String names[] ={"A","B","C","D"}; 
     AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this); 
     LayoutInflater inflater = getLayoutInflater(); 
     View convertView = (View) inflater.inflate(R.layout.row_file, null); 
     alertDialog.setView(convertView); 
     alertDialog.setTitle("List"); 
     ListView lv = (ListView) convertView.findViewById(R.id.listView); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,names); 
     lv.setAdapter(adapter); 
     alertDialog.show(); 

そうでない場合は、あなたのコードは結構です。できます。

詳しくはlinkを参照してください。

もう1つはofficial linkです。

+0

これを試してみましたか? @pankaj –

1

ソリューションのすべてをお試しください:


popupwindow.setFocusale(true); 
listView xml : "android:focusable="true" 

ではなく、あなたのアダプタにgetViewを行くと

convertView.setOnClickListener 

を追加 lstSiteMenu.setOnItemClickListener
を使用していません

希望はあなたを助ける!アダプタクラス

public class MenuItemsAdapter extends Base Adapter{ 
     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      /* 
          Paste your adapter code 
      */ 
       customView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.v("log", "You clicked at pos "+position); 
       } 
      }); 
     } 
} 

-1

セット行のonclickリスナーは、このコードは、すべてのSDKバージョンで働いていました。

また、xmlファイル

android:descendantFocusability="blocksDescendants" 
android:focusable="false" 
android:focusableInTouchMode="false" 
関連する問題