2016-04-09 4 views
0

私はリストビュー用のカスタム配列アダプターを作成しました。それはプレーヤーの名前とスコアを持っている、私はまた、そのボタンがクリックされたときに、セルに追加ボタンがある私はポップアップ画面が表示されたい、ここでは、ユーザーがプレーヤーのスコアを追加することができますです。このポップアップウィンドウには、 "+ 1"、 "+2"、 "+10"の6つのボタンと終了ボタンがあります。完了したボタンをクリックすると、スコアが更新されます。リストビューのポップアップウィンドウ

私はcustomArraryAdapterクラスのadd button clickイベントを処理しているので、ここでもポップアップを作成する必要があります。私は検索し、これを成功させようとしました。 私はView = convertViewを持っているとviewHolder = holder問題は、私はポップアップを作成するためのパラメータとして渡すことが何のでわからないです。私はこれまで試したどのような

。以下のコードはmyCustomArrayAdapterクラスです。私はまた、タッチイベントを処理することができないポップアップを読んだが、いくつかはそれができると言っている。ポップアップにはたくさんのボタンがあるので、これは素晴らしい解決策かもしれません。

これは私のaddScoresメソッドは、この enter image description here

のように見えます@Override CustomArrayAdapterクラスでパブリックビューgetViewメソッド(最終int型の位置、ビューconvertView、のViewGroupの親)メソッド

//Handle add button click 
holder.add.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     addScores(convertView); 

     //list gets updated 
     notifyDataSetChanged(); 


    } 

}); 

であります

private void addScores(View v){ PopupWindow pw; LayoutInflater inflater = (LayoutInflater)v.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); pw.setBackgroundDrawable(new BitmapDrawable()); pw.setOutsideTouchable(true); pw.showAsDropDown(btnSelectWeight); } 
+0

アダプターからコンテキストを渡すことができます。そこからLayoutInflator.from(コンテキスト)メソッドを使用してLayoutInflatorオブジェクトを作成できます。 – Krish

+0

コードを含むソリューションを提供できますか?私は今コンテキストを渡そうとしましたが、まだgetSystemServiceに赤いテキストが表示されていますが、ポップアップウィンドウでtouch/clickイベントを処理できないということは本当ですか? –

+0

このリンクをチェックするhttps://androidresearch.wordpress.com/2012/05/06/how-to-create-popups-in-android/ – Krish

答えて

0

あなたは同じ方法でポップアップに表示されるViewを渡すことができます行う。

はこのことを考えてみましょう:

View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); 

あなたweight_popupのレイアウトは6つのボタン、そこのonClick持っているあなたはスコアを更新してしまう含まれている必要があります。 何かのように:

Button btn1 = (Button)layout.findViewById(R.id.btn1); 
btn1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        //update your score here. 
       } 
      }); 

//other buttons.. 

pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);