BaseExpandableListAdapter и GetChildView - ограничения настраиваемого диалога?

первый вопрос и новичок в 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, но в доступном контексте такого метода нет. Я также ограничен рамками анонимного класса. Диалоговое окно отображается, но я не могу получить из него какие-либо значения, кроме того, я не могу определить, когда диалоговое окно закрыто, из-за отсутствия обратной связи.

Я хотел бы вернуть два целых числа из диалогового окна. Не уверен, что какой-либо из кодов диалога актуален, но вот заголовок.

public class WeightEntryDialog extends Activity {

Я зашел слишком далеко в классе BaseExpandableListAdapter? Я пытаюсь сделать что-то в адаптере, что я действительно должен делать в другом месте, для меня важно сохранить контроль над дочерними элементами в расширяемом списке. Надеюсь, я ясно, и кто-то может предложить некоторые рекомендации. Огромное спасибо.


person DanBo    schedule 08.11.2011    source источник


Ответы (1)


На данный момент я решил решить свою проблему, раздувая диалог из класса адаптера напрямую, а не запуская отдельное действие, и я создал собственный прослушиватель для обмена некоторыми данными между диалогом и адаптером.

person DanBo    schedule 08.11.2011