xamarin - 如果是多个数组列表,我可以将它们存储在某处并调用它们,还是需要为每个 AL 创建单独的类
问题描述
在我的应用程序中,我有多个数组列表(在我的情况下超过 20 个),试图找到一种方法将它们存储在某个地方并在可能的情况下调用它们。就像 VB 模块中的旧方法一样。这是我的代码!
模型类代码
公开课联系人
public class Contacts
{
[PrimaryKey][AutoIncrement]
public int Contact_ID { get; set; }
public string Contact_Name { get; set; }
public string Contact_Address { get; set; }
public string Contact_eMail { get; set; }
}
主页
`public partial class MainPage : ContentPage
{
readonly SQLiteAsyncConnection _connection
= DependencyService.Get<ISQLite>().GetConnection();
public MainPage()
{
InitializeComponent();
this.BindingContext = this;
}
protected override void OnAppearing()
{
base.OnAppearing();
// I have more than 20 This type of Array Lists, and some contains
more than 30 items
int[] intArray;
intArray = new int[4];
intArray[0] = 13;
intArray[1] = 14;
intArray[2] = 18;
intArray[3] = 21;
var list = _connection.Table<Contacts>().ToListAsync().Result;
var myAL = new ArrayList();
foreach (int rowList in intArray)
{
var NewItem = list.Where(x => x.Contact_ID.Equals(rowList));
myAL.Add(NewItem.FirstOrDefault());
}
listView.ItemsSource = myAL;
}
}`
XAML 页面
`<StackLayout>
<ListView x:Name="listView" HasUnevenRows="True" IsVisible="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Vertical" VerticalOptions="CenterAndExpand">
<Frame BackgroundColor="LightYellow">
<StackLayout Orientation="Vertical" VerticalOptions="Center" >
<Label Text="{Binding Contact_Name}" HorizontalOptions="StartAndExpand" TextColor="Black" FontSize="Medium"></Label>
<Label Text="{Binding Contact_Address}" HorizontalOptions="StartAndExpand" TextColor="Black" FontSize="Medium"></Label>
<Label Text="{Binding Contact_eMail}" HorizontalOptions="StartAndExpand" TextColor="Black" FontSize="Medium"></Label>
</StackLayout>
</Frame>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>`
解决方案
这是一个简单的示例:
为数组列表MyArrayData创建类(例如这里有两个列表):
public class MyArrayData
{
public IList<string> StringArray { get; set; }
public IList<int> IntArray { get; set; }
}
那么你可以像这样保存它:
MyArrayData dataArray = new MyArrayData() { IntArray = new List<int>() { 1,2, 3, 4 }, StringArray = new List<string>() { "A", "B", "C" } };
string jsonString = JsonConvert.SerializeObject(dataArray);
Preferences.Set("list", jsonString);
用钥匙得到它:
string dateJason = Preferences.Get("list", "");
MyArrayData myArrayData = JsonConvert.DeserializeObject<MyArrayData>(dateJason);
var intArray = myArrayData.IntArray;
var stringArray = myArrayData.StringArray;
推荐阅读
- python-3.x - 练习 Python + 请求 + API AOUTH2Error 403
- javascript - 如何将数组中存在的每个对象的值与另一个数组的值相乘?
- r - 解决 group_by 问题的方法,特别是通过从分组数据框中提取信息?
- firebase - 我无法从 Firestore Flutter 检索和查看数据
- wcf - Microsoft.Xrm.Tooling.Connector.CrmServiceClient 安全令牌每 5 小时过期一次,出现用户身份验证失败错误
- python - 如何更改 IPython 的启动目录 (get_ipython().profile_dir.startup_dir)?
- c - 如何一一使用 C (sem_t) 线程
- sql-server - 在存储过程中显示打印的消息
- javascript - 在 JavaScript 中计算分组数组中的金额
- xcode - 如何在 Xcode 中使用汇编语言