BaseExpandableListAdapter и GetChildView - ограничения пользовательского диалога? - PullRequest
1 голос
/ 08 ноября 2011

первый вопрос и новичок в 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?Пытаюсь ли я сделать в адаптере что-то, что я действительно должен делать в другом месте, для меня важно сохранить контроль над дочерними элементами в расширяемом списке.Надеюсь, я ясен, и кто-то может предложить некоторые рекомендации.Спасибо большое.

1 Ответ

0 голосов
/ 08 ноября 2011

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

...