我在更新ExpandabeListView的子控件数据时遇到了一些问题。
我的情景是:
1。我有一个MainActivity
2。它包含一个ExpandableListView
3。上面的ExpandableListView的子节点是一个带有Button和TextView的LinearLayout
4。单击上面的按钮将显示DatePickerDialog
5。在选择日期时,我需要将所选日期设置为Textview。
我实施的内容:
1。主要活动是一个单独的文件,扩展活动说MyMainActivity.cs
2。我已在单独的文件中为上面的expandableListView实现了适配器,扩展了BaseExpandableListAdapter说MyListAdapater.cs
3。单击Button时,我调用ShowDiloag for Activity,因为我无法从仅扩展了BaseExpandableListAdapter的MyListAdapater.cs调用ShowDaialog。
4。所以现在在Activity中显示了一个DatePickerDialog。
5。在dateset回调中,我调用Activity中的一个函数,该函数又调用MyListAdapter.cs中的函数来更新ExpandableListView中的TextView。 (这不起作用)
我确信notifyDataSetChanged在某种程度上无济于事。
请帮我解决这个问题。
对于冗长的段落感到抱歉。我想过发布代码。但它需要大量编辑才能显示有问题的代码。
无论如何,如果需要或需要,我会分享我的整个代码。
代码
主要活动。
public class MainActivity : Activity
{
protected override Dialog OnCreateDialog (int id)
{
if (id == 1111)
{
DatePickerDialog datePicker = new DatePickerDialog (this, HandleDateSet, 2015, 1, 2);
datePicker.DatePicker.MinDate = new Java.Util.Date ().Time - 1000;
return datePicker;
}
}
void HandleDateSet (object sender, DatePickerDialog.DateSetEventArgs e)
{
todoListAdapter.AlertDateImageButtonClicked (e.Date.ToString ("dd-MMM-yyyy"));
}
}
ListAdapter.cs
public class ToDoListViewAdapter : BaseExpandableListAdapter
{
public ToDoListViewAdapter (Activity newContext) : base ()
{
myContext = newContext;
}
public override View GetChildView (int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
//other code
inListDateTextView = view.FindViewById<TextView> (Resource.Id.DateTextView);
dateButton = view.FindViewById<ImageButton> (Resource.Id.DateButton);
dateButton.Click += DateImageButtonClicked;
}
public void DateImageButtonClicked(object sender, EventArgs e)
{
myContext.ShowDialog (1111);
}
public void AlertDateImageButtonClicked(String myDate)
{
inListDateTextView.Text = myDate; //not working
}
}
提前致谢。