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