1

最初の質問とAndroidの初心者-うまくいけば、それは私が完全に見逃した簡単な解決策があることを意味します-ここに期待しています...ここに行きます。

カスタム BaseExpandableListAdapter を使用して ExpandableListView を駆動し、アダプター内で GetChildView メソッドをオーバーライドして、5 つのボタンを持つカスタムの子を表示しています。

public class ExpandableListAdapter extends BaseExpandableListAdapter {    

private Context context;

private ArrayList<String> groups;

private ArrayList<ArrayList<String>> children;

private int setCount;
private int currentSetNumber;

...

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
        View convertView, ViewGroup parent) {

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.child_layout, null);
        parent.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
    }

    Button bPlus = (Button) convertView.findViewById(R.id.btnAddSet);

    if(childPosition == 0){
        Button bSetPlace = (Button) convertView.findViewById(R.id.bSetPlace1);
        bSetPlace.setText("Set 1");

        bSetPlace.setOnClickListener(new View.OnClickListener(){

            ***public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent myIntent = new Intent(context,WeightEntryDialog.class);
                context.startActivity(myIntent);    
            }***
        });

... remainder of method (not relevant)

これまでのところ何も問題はありませんが、子ボタンに配置された onClick メソッドでスタックしているようです。私がやりたいのは、起動しているインテント (ダイアログ) から結果を取得することです。理想的には、startActivityForResult を呼び出しますが、使用可能なコンテキストからそのようなメソッドはありません。また、匿名クラスの範囲によっても制限されています。ダイアログは表示されていますが、そこから値を取得できません。さらに、フィードバックがないため、ダイアログがいつ閉じられたのかを特定できません。

ダイアログから 2 つの整数を返したいと思います。ダイアログコードのいずれかが関連しているかどうかはわかりませんが、ヘッダーは次のとおりです。

public class WeightEntryDialog extends Activity {

BaseExpandableListAdapter クラスに行きすぎましたか? 他の場所で実際に行う必要があることをアダプターで実行しようとしていますか?展開可能なリストで子アイテムの制御を維持することが重要です。うまくいけば、私は明確で、誰かが何らかのガイダンスを提供できます。本当にありがとう。

4

1 に答える 1

0

とりあえず、別のアクティビティを起動するのではなく、アダプター クラスからダイアログを直接拡張することで問題に対処することにし、ダイアログとアダプターの間でデータを共有するカスタム リスナーを作成しました。

于 2011-11-08T18:42:23.440 に答える