BaseExpandableListAdapter и getChildView — ограничения пользовательского диалога?

#android #events #expandablelistview #expandablelistadapter #customdialog

#Android #Мероприятия #расширяемый список #расширяемый список адаптеров #пользовательский каталог

Вопрос:

первый вопрос и новичок в 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, размещенном на дочерней кнопке. Что я хотел бы сделать, так это получить результат из intent (диалога), который я запускаю. В идеале я бы вызвал startActivityForResult, но в доступном контексте такого метода нет. Я также ограничен областью действия анонимного класса. Диалоговое окно отображается, но я не могу получить из него какие-либо значения, более того, я не могу определить, когда диалоговое окно закрыто из-за отсутствия обратной связи.

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

 public class WeightEntryDialog extends Activity {
  

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

Ответ №1:

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