2

私のExpandableListViewには、いくつかのEditTextボックスとボタンがあります(サインイン/登録画面です)。スイッチケース付きのonClick関数を使用して、クリックされたボタンを選択し、それらを使用して何かを実行したいと思います。

ボタンについては、onClickListenerを設定できません。

これはすべて、私が書いたものよりもカスタム拡張可能リストアダプタクラスにあります。

カスタム拡張可能リストアダプタの通常の機能に対処する別の方法があることは知っていますが、その方法がわかりません。

CustomExpandableAdapterクラス内の関連するコードスニペットは次のとおりです。

    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
   v = null;
   position = 0;
   position=getChildId(groupPosition, childPosition);

   * - - unrelated code - *

   if(position==2)  //Draws Forgot Button
   {
       v = inflater.inflate(R.layout.forgot, parent, false);
       View forgot = v.findViewById(R.id.fpb);
       //What goes here to setOnClickListener?   
   }
   return v;
}

public void onClick(View w) {

    PopupWindow pw= new PopupWindow(inflater.inflate(R.layout.popup_layout, null, false),220,160, true);;
    switch(w.getId())
    {
    case R.id.fpb:

        {       
            pw.showAtLocation(v, Gravity.CENTER, 0, 0);
        }

}

誰かが助けてくれますか?

4

3 に答える 3

2

アダプターに実装されていることを願っていOnClickListnerます。はいの場合、使用時にどのようなエラーが発生しましたかforgot.setOnClickListener(this);

于 2012-07-16T07:27:23.320 に答える
0

了解しました...OnClickListenerをビューではなく、特定のボタンに設定する必要があります。つまり、その中でViewByID(EditBox、Buttonsなどを検索)を検索してから、onClickListenerをView forgotそれらに設定する必要があります。

そのような...

Button b = forgot.findViewByID("myButton");
b.setOnClickListener(new OnClickListener {
    etc...

必ず正しいOnClickListenerを使用してください。APIには2つあります!:)

于 2012-07-16T08:48:37.670 に答える
0

より良い解決策が存在するかもしれませんが、これが私がすることです:

1.インターフェース

import android.view.View;

public interface RecyclerViewClickListener {
    public void recyclerViewListClicked(View v);
}

2.アクティビティ/フラグメント内

public class MyFragment(or Activity) Fragment implements RecyclerViewClickListener {

メソッドが実装されていないというエラーが表示されます。それらを追加します

@Override public void recyclerViewListClicked(View v) {
    YourObject mObject = (YourObject) v.getTag();
    Log.i("My Object with >>> ", String.valueOf(mObject.getId()));
}

3.コンストラクターのアダプターで、最後に追加します

public ExpandListViewAdapter(FragmentActivityコンテキストなど、RecyclerViewClickListener clickListener)

4. getChildView()のアダプタで

   button1.setOnClickListener(new View.OnClickListener() {
            @Override public void onClick(View v) {
               v.setTag(YourObject);
               clickListener.recyclerViewListClicked(v);
            }
   });
于 2015-08-13T15:43:44.617 に答える