C# Xamarin android通过webservice将数据从列表视图保存到数据库
当我尝试保存最后一个项目时,列表视图中的每个项目都有一个按钮没有问题,但当我尝试保存另一个项目时,它会多次保存数据 这是我的密码 公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)C# Xamarin android通过webservice将数据从列表视图保存到数据库,c#,android,xamarin,C#,Android,Xamarin,当我尝试保存最后一个项目时,列表视图中的每个项目都有一个按钮没有问题,但当我尝试保存另一个项目时,它会多次保存数据 这是我的密码 公共覆盖视图GetView(int位置、视图转换视图、视图组父视图) { var项目=交易[头寸]; 视图=转换视图; 如果(view==null)//没有要重用的视图,则创建新的 视图=context.LayoutInflater.Inflate(Resource.Layout.trans_Layout,null); view.findviewbyd(Resourc
{
var项目=交易[头寸];
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
视图=context.LayoutInflater.Inflate(Resource.Layout.trans_Layout,null);
view.findviewbyd(Resource.Id.supply\u amount\u txt).Text=item.amount1;
view.findviewbyd(Resource.Id.demand\u amount\u txt).Text=item.amount2;
//view.findviewbyd(Resource.Id.Text3).Text=item.client\u代码;
view.findviewbyd(Resource.Id.supply\u cur\u txt).Text=item.cur1;
view.findviewbyd(Resource.Id.demadn\u cur\u txt).Text=item.cur2;
view.findviewbyd(Resource.Id.rate\u txt).Text=item.rate;
view.findviewbyd(Resource.Id.Id\u txt).Text=item.tran\u Id;
view.findviewbyd(Resource.Id.user\u name\u txt).Text=item.username;
view.findviewbyd(Resource.Id.tran\u date\u time\u txt).Text=item.tran\u date;
accept_btn=view.findviewbyd(Resource.Id.btn);
amo2=转换为特定值(项目amount2);
cu2=项目.cur2;
amo1=转换为特定值(项目amount1);
cu1=项目1.cur1;
rat=换算到特定值(项目费率);
tr_id=转换为32(项目.tran_id);
cl_代码=项目。客户_代码;
接受\u btn.单击+=委托{
myWS.ChekTranIDAsync(转换为32(item.tran_id));
XTran=Convert.ToInt32(Convert.ToInt32(item.tran_id));
myWS.ChekTranIDCompleted+=myWS_ChekTranIDCompleted;
};
返回视图;
}
私有void MyWS_ChekTranIDCompleted(对象发送方,MyWS.ChekTranIDCompletedEventArgs e)
{
//myWS.accept_-tranAsync(“123”,Convert.ToDecimal(item.amount2),item.cur2,Convert.ToDecimal(item.amount1),item.cur1,Convert.ToDecimal(item.rate),“Convert.ToDecimal”,Convert.ToInt32(item.tran\u id),item.client\u代码);
myWS.accept_transasync(“123”,amo2,cu2,amo1,cu2,rat,“xxx”,XTran,cl_代码);
myWS.accept\u tranCompleted+=myWS\u accept\u tranCompleted;
}
当项目被回收用于可视化显示时,此代码被多次执行,并且GetView为同一视图持有者运行多次。所以你需要先退订。你能再解释一下吗?!我们不能确定调用getView()的顺序和次数绝对没有保证。最好是重复使用旧视图。你能解释更多吗?!你想知道更多关于它的什么?@WendyZang MSFT感谢你的帮助。。。。你说“重用旧视图会更好”我怎么做?!旧视图是重用的convertView。你可以参考下面的链接。
{
var item = trans[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = context.LayoutInflater.Inflate(Resource.Layout.trans_layout, null);
view.FindViewById<TextView>(Resource.Id.supply_amount_txt).Text = item.amount1;
view.FindViewById<TextView>(Resource.Id.demand_amount_txt).Text = item.amount2;
//view.FindViewById<TextView>(Resource.Id.Text3).Text = item.client_code;
view.FindViewById<TextView>(Resource.Id.supply_cur_txt).Text = item.cur1;
view.FindViewById<TextView>(Resource.Id.demadn_cur_txt).Text = item.cur2;
view.FindViewById<TextView>(Resource.Id.rate_txt).Text = item.rate;
view.FindViewById<TextView>(Resource.Id.ID_txt).Text = item.tran_id;
view.FindViewById<TextView>(Resource.Id.user_name_txt).Text = item.username;
view.FindViewById<TextView>(Resource.Id.tran_date_time_txt).Text = item.tran_date ;
accept_btn = view.FindViewById<Button>(Resource.Id.btn);
amo2 = Convert.ToDecimal(item.amount2);
cu2 = item.cur2;
amo1 = Convert.ToDecimal(item.amount1);
cu1 = item.cur1;
rat = Convert.ToDecimal(item.rate);
tr_id = Convert.ToInt32(item.tran_id);
cl_code = item.client_code;
accept_btn.Click +=delegate {
myWS.ChekTranIDAsync(Convert.ToInt32(item.tran_id));
XTran = Convert.ToInt32(Convert.ToInt32(item.tran_id));
myWS.ChekTranIDCompleted += MyWS_ChekTranIDCompleted;
};
return view;
}
private void MyWS_ChekTranIDCompleted(object sender, myWS.ChekTranIDCompletedEventArgs e)
{
//myWS.accept_tranAsync("123", Convert.ToDecimal(item.amount2), item.cur2, Convert.ToDecimal(item.amount1), item.cur1, Convert.ToDecimal(item.rate), "ابو ليلى", Convert.ToInt32(item.tran_id), item.client_code);
myWS.accept_tranAsync("123", amo2, cu2, amo1, cu2, rat, "xxx", XTran, cl_code);
myWS.accept_tranCompleted += MyWS_accept_tranCompleted;
}
accept_btn.Click +=delegate