android - Xamarin,列表视图更新
问题描述
我对 Xamarin 的 ListVIew 更新有疑问。
你好。
他目前正在学习 Xamarin。我现在要创建的就像是对 Listview 的项目更新。
有一个名为 TX 1 的 ListView 项。在这里按下 TX 1 时,TX 1 --- > TX 2 --- > TX 3 --- > TX 1 这就是我们调用不同事件的方式。
这是我的代码。
public class MainActivity : Activity
{
ArrayAdapter<string> lstAdapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
int _Position = 0;
string[] _Test_ListView_tow = { "TX1", "TX2", "TX3" };
string[] _Set_RD_Data = { _Test_ListView_tow[_Position], "Display" };
ListView _Test_ListView = FindViewById<ListView>(Resource.Id._Test_ListView);
lstAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, _Set_RD_Data);
_Test_ListView.Adapter = lstAdapter;
_Test_ListView.ItemClick += (s, e) =>
{
switch(e.Position)
{
case 0:
if(_Position < 2)
{
_Position++;
_Set_RD_Data[0] = _Test_ListView_tow[_Position];
lstAdapter.NotifyDataSetChanged();
Console.WriteLine("Data : " + _Set_RD_Data[0].ToString());
Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
}
else if (_Position == 2)
{
_Position = 0;
_Set_RD_Data[0] = _Test_ListView_tow[_Position];
lstAdapter.NotifyDataSetChanged();
Console.WriteLine("Data : " + _Set_RD_Data[0].ToString());
Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
}
break;
}
};
}
}
我们如何做到这一点?当前的情况,由于 Toast,改变了内容、数据。但它不会改变 ListView 所说的内容。请告诉我。
解决方案
您可以使用Remove()
andInsert()
来更新项目。
首先,将_Set_RD_Data
表单类型更改string[]
为List<string>
. 然后你可以调用Remove()
andInsert()
方法来操作适配器中的数据。从适配器中删除_Set_RD_Data[0]
,然后修改该_Set_RD_Data[0]
值。最后,将其插入到索引 0 处的适配器。
这是代码:
public class MainActivity : AppCompatActivity
{
ArrayAdapter<string> lstAdapter;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
int _Position = 0;
string[] _Test_ListView_tow = { "TX1", "TX2", "TX3" };
List<string> _Set_RD_Data = new List<string>() { _Test_ListView_tow[_Position], "Display" };
ListView _Test_ListView = FindViewById<ListView>(Resource.Id._Test_ListView);
lstAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, _Set_RD_Data);
_Test_ListView.Adapter = lstAdapter;
_Test_ListView.ItemClick += (s, e) =>
{
switch (e.Position)
{
case 0:
if (_Position < 2)
{
_Position++;
lstAdapter.Remove(_Set_RD_Data[0]);
_Set_RD_Data[0] = _Test_ListView_tow[_Position];
lstAdapter.Insert(_Set_RD_Data[0], 0);
Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
}
else if (_Position == 2)
{
_Position = 0;
lstAdapter.Remove(_Set_RD_Data[0]);
_Set_RD_Data[0] = _Test_ListView_tow[_Position];
lstAdapter.Insert(_Set_RD_Data[0], 0);
Toast.MakeText(this, _Set_RD_Data[0] + "Select", ToastLength.Short).Show();
}
break;
}
};
}
}
推荐阅读
- python - 如何从shopify获取报告
- excel - 访问存储在 VBA 字典中的范围内的单个单元格值
- google-classroom - 如何在 API 调用上发布课堂帖子(仅使用材料)?
- html - 尝试更改 Doxygen 中的页眉和/或页脚
- javascript - 返回一个与另一个数组中的任何项都不匹配的数组项?
- git - git:关于创建分支和克隆 repos 的问题
- gridview - Yii2:固定第一列的Gridview
- unit-testing - VSTS - 运行控制台应用程序而不是单元测试
- wordpress - wp_mail() 不会在服务器上发送两个以上的连续消息或通过 mailtrap.io 在本地测试
- python - 如何表示具有多个属性的数据?