1

問題の解決策を探していましたが、まだわかりません。私は何を達成したいですか?

  1. Data作業中のデータを表すオブジェクトを取得しました。いくつかの変数を持つ単純なクラスで、Stringも実装しParcelableます。
  2. Dataオブジェクトに外部 Web サービスを設定し、結果を取得しましList<Data> dataList = new ArrayList<Data>();た。このリストを別の に送信しますActivity
  3. DataAdapter結果を表示するように拡張された を取得しましたArrayAdapter<Data>。すべて正常に動作します。アダプターを設定し、結果を に表示するだけListViewです。

    data = getIntent().getParcelableArrayListExtra("データ");

    dataAdapter = new DataAdapter(this, R.layout.activity_results_list,data);

    list.setAdapter(dataAdapter);

  4. 今、物事はトリッキーになり始めています。すべてのリスト要素にボタンを追加しました

    Button... android:onClick="showPopup"
    

このshowPopupメソッドは を作成し、PopupWindowそれを自分のレイアウトで膨らませます。

LinearLayout viewGroup = (LinearLayout) findViewById(R.id.table_phones);

LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View layout = layoutInflater.inflate(R.layout.popup_phones, viewGroup);

私の質問と問題は次のとおりです。データをそのポップアップに渡す方法は?? たとえば、特定のアイテムにData関連付けられたオブジェクトからテキストを渡し、ポップアップに表示したいだけです。ListView

必要に応じて、さらにコードを貼り付けることができます。

4

2 に答える 2

2

最初に、選択したリスト項目をコレクション オブジェクトとして変換しました。次に、それを配列リストとして変換できます。次に、その配列リストからアクセスして、ポップアップにデータを入力できます。サンプルコード:

lv1.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
        Collection<Object> str = mylist.get(arg2).values();
        ArrayList<Object> al1 = new ArrayList<Object>(str);

        LayoutInflater layout = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        View popupView = layout.inflate(R.layout.your_popup, null);

        popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);

        TextView tv1 = (TextView) popupView.findViewById(R.id.textView3);
        TextView tv2 = (TextView) popupView.findViewById(R.id.textView4);
        TextView tv3 = (TextView) popupView.findViewById(R.id.textView5);
        TextView tv4 = (TextView) popupView.findViewById(R.id.textView6);
        TextView tv5 = (TextView) popupView.findViewById(R.id.textView7);

        tv1.setText(al1.get(1));
        tv2.setText(al1.get(2));
        tv3.setText(al1.get(3));
        tv4.setText(al1.get(4));
        tv5.setText(al1.get(5));

        Button close = (Button) popupView.findViewById(R.id.close);
        close.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                popupWindow.dismiss();
            }
        });
    }
});

これがお役に立てば幸いです。

ありがとうございました。

于 2013-04-02T09:06:40.953 に答える
0

私はついに自分の仕事を完了することができました。Gunaseelan の回答は問題ありませんでしたが、リスト項目全体でのみ、リストの Button では機能しませんでした。ここで解決策を見つけました:

http://cyrilmottier.com/2011/11/23/listview-tips-tricks-4-add-several-clickable-areas/

カスタム onClickListener を作成し、それをカスタム アダプターにアタッチするだけです。次に、onClick メソッドでポップアップを作成し、クリックされたボタンの位置を取得してデータを入力します。

private OnClickListener phonesListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        ListView lv = (ListView) findViewById(R.id.list_results);
        final int position = lv.getPositionForView(v);.... make whatever you need
于 2013-04-02T10:42:40.717 に答える