Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.android TreeView中的事件处理(Xamarin android)_Xamarin.android_Treeview_Treenode - Fatal编程技术网

Xamarin.android TreeView中的事件处理(Xamarin android)

Xamarin.android TreeView中的事件处理(Xamarin android),xamarin.android,treeview,treenode,Xamarin.android,Treeview,Treenode,我已经在XamarinAndroid中开发了一个treeview。我按照这个开发了下面的示例 在MyHolder.cs中有一个名为CreateNodeView()的方法,该方法显示所有节点。 在这里,当我单击ParentNode时,控件将转到ParentView\u Click()[事件处理程序]。 我面临的问题是,从ParentView返回后,ParentNode下面的级别没有显示 非常感谢您的帮助 MyHolder.cs: namespace XamarinTreeView { public

我已经在XamarinAndroid中开发了一个treeview。我按照这个开发了下面的示例

在MyHolder.cs中有一个名为CreateNodeView()的方法,该方法显示所有节点。 在这里,当我单击ParentNode时,控件将转到ParentView\u Click()[事件处理程序]。 我面临的问题是,从ParentView返回后,ParentNode下面的级别没有显示

非常感谢您的帮助

MyHolder.cs:

namespace XamarinTreeView
{
public class MyHolder : TreeNode.BaseNodeViewHolder
{

    private Context mcontext;
    TextView level2_View, child_View, parent_View;

    public MyHolder(Context context) : base(context)
    {
        mcontext = context;
    }

    public override View CreateNodeView(TreeNode p0, Java.Lang.Object p1)
    {
        var inflater = LayoutInflater.FromContext(mcontext);
        var view = inflater.Inflate(Resource.Layout.itemview, null, true);

        level2_View = view.FindViewById<TextView>(Resource.Id.itemtv);
        child_View = view.FindViewById<TextView>(Resource.Id.itemtv1);
        parent_View = view.FindViewById<TextView>(Resource.Id.parent_tv);
        // tv.Click += Tv_Click;


        var item = p1 as TreeItem;
        if (item.text == " ParentNode" || item.text == " Child1")
        {
            var view2 = inflater.Inflate(Resource.Layout.parentview, null, true);
            parent_View = view2.FindViewById<TextView>(Resource.Id.parent_tv);
            parent_View.Text = item.text;
            parent_View.Click += ParentView_Click;             
            return view2;
        }
        if (item.text == " Level3-1" || item.text == " Level3-2" || item.text == " Level4")
        {
            var view1 = inflater.Inflate(Resource.Layout.childview, null, true);
            child_View = view1.FindViewById<TextView>(Resource.Id.itemtv1);
            child_View.Text = item.text;
            return view1;
        }
        else
        {
            level2_View.Text = item.text;
            return view;
        }
    }

    private void ParentView_Click(object sender, EventArgs e)
    {
        int iLeft = Resource.Drawable.plus;
        parent_View.SetCompoundDrawablesWithIntrinsicBounds(iLeft, 0, 0, 0);
    }      
 }
}
名称空间XamarinTreeView
{
公共类MyHolder:TreeNode.BaseNodeViewHolder
{
私有上下文;
TextView二级视图、子视图、父视图;
公共MyHolder(上下文):基(上下文)
{
mcontext=上下文;
}
公共覆盖视图CreateNodeView(TreeNode p0,Java.Lang.Object p1)
{
var充气器=LayoutInflater.FromContext(mcontext);
var视图=充气机.Inflate(Resource.Layout.itemview,null,true);
level2_View=View.findviewbyd(Resource.Id.itemtv);
child_View=View.findviewbyd(Resource.Id.itemtv1);
parent\u View=View.findviewbyd(Resource.Id.parent\u tv);
//电视点击+=电视点击;
变量项=p1作为树项;
if(item.text==“ParentNode”| | item.text==“Child1”)
{
var view2=充气机.Inflate(Resource.Layout.parentview,null,true);
parent\u View=view2.findviewbyd(Resource.Id.parent\u tv);
parent_View.Text=item.Text;
父视图。单击+=父视图单击;
返回视图2;
}
如果(item.text==“Level3-1”| | item.text==“Level3-2”| | item.text==“Level4”)
{
var view1=充气机.Inflate(Resource.Layout.childview,null,true);
child_View=view1.findviewbyd(Resource.Id.itemtv1);
child_View.Text=item.Text;
返回视图1;
}
其他的
{
level2_View.Text=item.Text;
返回视图;
}
}
私有void ParentView\u单击(对象发送方,事件参数e)
{
int iLeft=Resource.Drawable.plus;
父视图。SetCompoundDrawableSwithinInstincBounds(iLeft,0,0,0);
}      
}
}

如果要在
节点上添加单击事件,可以使用
TreeNode.setClickListener(TreeNodeClickListener listener)

为您执行
TreeNode.ITreeNodeClickListener
主活动

 public void OnClick(TreeNode p0, Object p1)
        {
            //do something
        var view = parent.ViewHolder.View as View;
        int iLeft = Resource.Drawable.dapao;
        TextView tv = view.FindViewById<TextView>(Resource.Id.itemtv);
        tv.SetCompoundDrawablesWithIntrinsicBounds(iLeft, 0, 0, 0);
        tv.Text = "adfasdf";
        Toast.MakeText(this, "111", ToastLength.Short).Show();
        }
请参阅


我还提供了一个演示

谢谢。。感谢您的努力。很高兴它有所帮助:)。
parent.SetClickListener(this);