从AlertDialog Data更新ExpandableListView的子项

时间:2015-01-08 19:02:55

标签: android android-activity xamarin xamarin.android expandablelistview

我在更新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
    }
}

提前致谢。

0 个答案:

没有答案