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