Есть активити, внутри 2 динамических фрагмента. Второй фрагмент содержит 2 вкладки (реализованных через фрагменты).
Во вкладке "Tab1" находится ExpandableListView, в родительских элементах имеются кнопки "добавить". Слушатель кнопки реализован в адаптере ExpandableListView
explist_group.xml
[syntax=java]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dn_explist_groupLLayout"
style="@style/Orange_Other"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/dn_GroupName"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="30dp"
android:layout_weight="10"
android:gravity="center_vertical"
android:text="TextView" />
<Button
android:id="@+id/dn_buttonAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="+" />
</LinearLayout>
[/syntax]
По нажатию кнопки "добавить" вызываю DialogFragment. После модификаций данных в диалоге произвожу обновление данных в БД
Вот собственно мы подошли к сути вопроса. Как после закрытия DialogFragment'a (this.dismiss()) обновить данные для адатера и послать ему notifyDataSetChanged.
Tab1.java
[syntax=java]
public class Tab1 extends Fragment {
ArrayList<String> group;
ArrayList<Object> child;
private static String DATE_ID;
private FragmentManager fm;
private Context context;
private AdapterExpList expAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.context = getActivity();
group = new ArrayList<String>();
child = new ArrayList<Object>();
fm = getFragmentManager();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
pullArguments();
View vRoot = inflater
.inflate(R.layout.calc_daynote_tab1_fragment, null);
ExpandableListView expLV = (ExpandableListView) vRoot
.findViewById(R.id.tab1_expandableListView);
CrData4Adapter.fillArrays(context, group, child, DATE_ID); //выборка данных из бд в group, child
expAdapter = new AdapterExpList(context, group, child, fm, DATE_ID);
expLV.setAdapter(expAdapter);
return vRoot;
}
[/syntax]
AdapterExpList.java
[syntax=java]
@Override
public View getGroupView(final int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater lInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = lInflater.inflate(
R.layout.calc_frag_right_daynote_explist_group, null);
}
Button btnAdd = (Button) convertView.findViewById(R.id.dn_buttonAdd);
btnAdd.setFocusable(false);
btnAdd.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
CC_DialogAdd dlgAdd = new CC_DialogAdd ();
dlgAddProd.show(fm_FromDNTab1, "AddDialog");
}
});
[/syntax]
fm_FromDNTab1 - FragmentManager, который прокидываю в адаптер из вкладки "Tab1" при инициализации.
Помогите с данным вопросом. Спасибо.
notifyDataSetChanged
Re: notifyDataSetChanged
[syntax=java5]
dialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
})
[/syntax]
т.е. реализуете listener и в нем выполняете необходимый код.
dialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
})
[/syntax]
т.е. реализуете listener и в нем выполняете необходимый код.

Re: notifyDataSetChanged
Спасибо за подсказку на счет DismissListener, но проблема в том, что это объявление проходит внутри AdapterExpList. А вот как из адаптера прокинуть сообщение в класс Tab1
Или нужно из класса Tab1 в AdapterExpList прокинуть эксземпляр созданого ExpListView (expLV) и уже внутри OnDismissListener вызвать expLV.notifyDataSetChanged
Как то очень уж криво это выглядит. Так не должно быть. Должен быть другой выход.
Есть мысль - реализовать показ диалога сразу из класса Tab1 и далее через интерфейс класса DialogFragment ловить любые события, что конечно же решило бы все проблемы. Но тогда подымается вопрос, как получить эвент нажатия кнопки (explist_group.xml) в классе Tab1, чтоб вызвать этот "мною любимый" диалог??
Или нужно из класса Tab1 в AdapterExpList прокинуть эксземпляр созданого ExpListView (expLV) и уже внутри OnDismissListener вызвать expLV.notifyDataSetChanged
Как то очень уж криво это выглядит. Так не должно быть. Должен быть другой выход.
Есть мысль - реализовать показ диалога сразу из класса Tab1 и далее через интерфейс класса DialogFragment ловить любые события, что конечно же решило бы все проблемы. Но тогда подымается вопрос, как получить эвент нажатия кнопки (explist_group.xml) в классе Tab1, чтоб вызвать этот "мною любимый" диалог??
Re: notifyDataSetChanged
прямо будет выглядеть при использовании контент-провайдера. Все само собой обновится и не нужно будет выдумывать ничего.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: notifyDataSetChanged
спасибо. сегодня посмотрю с чем его едят.
Re: notifyDataSetChanged
к сожалению у диалог фрагмента нет setOnDismissListener.altwin писал(а):[syntax=java5]
dialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
})
[/syntax]
т.е. реализуете listener и в нем выполняете необходимый код.
застрял...