2

数時間検索しましたが、問題を解決するものが見つかりませんでした。ポップアップウィンドウを使用するアプリケーションがあります。そのポップアップウィンドウ内に、電話の連絡先のリストを表示したいのですが、この部分は機能しています。ArrayAdapterを拡張するアダプターを作成し、リストに電話の連絡先を入力しました。

しかし今、私はこれらの連絡先と対話したいと思います。いずれかをクリックして、連絡先の情報をユーザーに表示します。OnItemClickListener()をリストに追加しましたが、呼び出されません。セルをフォーカスできないようにし、各アイテムにonClickListenersを追加しようとしましたが、セルにハイライトが表示されません。ハマった。

以下は、ListViewをセットアップし、onItemClickリスナーをリストビューに追加するために使用するコードです。

ListView contactList = (ListView) contentView.findViewById(R.id.contacts_list);
  ContactsProcessing processContacts = new ContactsProcessing();
  contactList.setAdapter(processContacts.getListAdapter());
  contactList.setItemsCanFocus(false);
  contactList.setFocusableInTouchMode(false);
  contactList.setOnItemClickListener(new OnItemClickListener() {

     @Override
     public void onItemClick(AdapterView<?> l, View v, int position, long id) {
        // TODO Auto-generated method stub
        // super.onListItemClick(l, v, position, id);
        Toast toast = new Toast(MainActivity.this);
        toast.setText("Item Clicked");
        toast.show();
        m_ButtonFeedback.hapticFeedback();
        Log.d("MainActivity", "Item Clicked");


     }
  });

同じポップアップウィンドウに、終了ボタンもあります。それは私が期待するように機能します。

ImageButton exit = (ImageButton) contentView.findViewById(R.id.contacts_close_button);
  exit.setOnClickListener(new OnClickListener() {

     @Override
     public void onClick(View _v) {
        window.dismiss();

     }
  });

これが私のセルのXMLです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" 
android:background="@android:color/transparent"
android:id="@+id/contact_cell_root" >

<TextView
    android:id="@+id/contact_cell_headerText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:paddingTop="2dp"
    android:paddingBottom="2dp"
    android:paddingLeft="15dp"
    android:scrollbars="none"
    android:textColor="#29abe2"
    android:textSize="18sp"
    android:textStyle="bold"
    android:visibility="gone" />

<View
    android:id="@+id/contact_cell_header_divider" 
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="#29abe2"
    android:visibility="gone"/>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:background="@android:color/transparent"
    android:gravity="center"
    android:paddingRight="10dp"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/contact_cell_user_image"
        android:adjustViewBounds="true"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:scaleType="centerInside"
        android:src="@drawable/contact_default"
        android:focusable="false" />

    <LinearLayout 
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingTop="5dp" >

        <TextView
            android:id="@+id/contact_cell_titleText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:ellipsize="end"
            android:singleLine="true"
            android:text="John Smith"

            android:textStyle="bold"
            android:textSize="16sp" 
            android:textColor="@android:color/black"/>

        <TextView
            android:id="@+id/contact_cell_companyName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/titleText"
            android:ellipsize="end"
            android:text="Company Name"

            android:textSize="14sp"
            android:textColor="@android:color/darker_gray" />
    </LinearLayout>
    <ImageView
        android:id="@+id/contact_cell_imageView"    
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:gravity="center_vertical"
        android:src="@drawable/ic_launcher"
        android:scaleType="centerInside"
        android:focusable="false"
         />
</LinearLayout>
<View
    android:id="@+id/contact_cell_divider" 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:background="#e7e7e7"
    />

</LinearLayout>
4

3 に答える 3

8

ポップアップ ウィンドウが作成され、Focusable ではないことが判明しました。簡単な修正は、ポップアップ ウィンドウをフォーカス可能にすることです。

PopupWindow window;
window = new PopupWindow(context);
window.setFocusable(true);

フォーカス可能になると、ビュー内のすべてのコンポーネントがアクティブになります。

于 2012-07-16T15:04:59.480 に答える
0

これを修正する方法は、ダイアログを作成してから setItems() コマンドを使用することです。

http://developer.android.com/guide/topics/ui/dialogs.html

「リストの追加」まで下にスクロールすると、例があります。ここでは、各項目で onClick() を定義できます

于 2012-07-13T19:22:36.647 に答える