notifyDataSetChanged
Добавлено: 12 апр 2014, 19:24
Есть активити, внутри 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" при инициализации.
Помогите с данным вопросом. Спасибо.
Во вкладке "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" при инициализации.
Помогите с данным вопросом. Спасибо.