0

カスタム ダイアログにラジオ ボタンとテキストビューがあります。約250項目あるので、リストビューを使用しています。
ラジオボタンに OnCheckedStateListener を設定しています。状態が変わるたびに、リスナーのダイアログを閉じます。そして、デフォルトで1つの項目をチェック済みに設定しています。

しかし、ダイアログを 2 回目に開くと、ダイアログが開く前に OnCheckedStateListener が呼び出され、アプリケーション全体がクラッシュします。
私はホルダービューパターンに従っています。このシナリオでサンプルコードを使用してビューホルダーパターンを使用するための正しいアプローチを誰かに提案してもらえますか、またはウェブ上の良い資料を指摘してもらえますか。
この質問を投稿する前に、よく検索しました。しかし、何も役に立ちませんでした。
前もって感謝します。

編集:

私も試してみましonclickListenerたが、ダイアログの表示ビューで一番上または一番下のものを選択すると、時々機能しませんでした...奇妙な..onFocusChangeListener同様に。

編集:

     if (row == null) {
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new RecordHolder();
        holder.txtTitle = (TextView) row.findViewById(R.id.item_text);
        holder.radiobutton = (RadioButton)row.findViewById(R.id.radiobutton);               

            holder.radiobutton.setOnCheckedChangeListener(new 
                                       CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, 
                                            boolean isChecked) {
            if(buttonView.isChecked()){
                       // this call back listener will dismiss the dialog 
                       // from the fragement where I have called
            mCallbackListnr.stateUpdated(pPosition);

                        }


                }}); 



                row.setTag(holder);
            } else {
                holder = (RecordHolder) row.getTag();
            }

            Item item = data.get(position);
                // i am setting the state as checked here

            if(item.id.equals(selectedItem.id)){
              holder.radiobutton.setChecked(true);
            }else{
                 holder.radiobutton.setChecked(false);  
            }
            holder.txtTitle.setText(item.getTitle());

    }
4

0 に答える 0