【问题标题】:How to populate collectionview from Json file?如何从 Json 文件中填充 collectionview?
【发布时间】:2021-11-01 04:07:49
【问题描述】:

我接收并反序列化 json 文件,现在我需要在 Xamarin Forms 中的 collectionview 上填充相同的数据。
这里是json文件:

{
    "response": "OK",
    "Data": [
        {
            "N_PARTE": "POLEA PARA BULL",
            "DESCRIPCION": "POLEA PARA BULL C/BALERO Y ANILLOS",
            "INV_EXISTE": "0",
            "UNI_MEDIDA": "PZ"
        },
        {
            "N_PARTE": "polea para bull c/baleros y anillo ",
            "DESCRIPCION": "polea para bull c/balero y anillo ",
            "INV_EXISTE": "1",
            "UNI_MEDIDA": "PZ"
        },
        {
            "N_PARTE": "2170993",
            "DESCRIPCION": "ESTRACTOR DE POLEA O BALERO ",
            "INV_EXISTE": "0",
            "UNI_MEDIDA": "PZ"
        }
    ]
}

我需要 collectionview 中的以下格式:

-------------------------------------------------
PARTE:
DESC:
INV:
MEDIDA:
------------------------------------------------

现在我使用以下代码填充 ListView,但我需要将列表视图更改为 CollectionView 并显示我提到的数据。

public ObservableCollection<string> itemlist;    
        public MainPage()
        {
            InitializeComponent();
            itemlist = new ObservableCollection<string>();

            listparts.ItemsSource = itemlist;
        }


var msjdes = JsonConvert.DeserializeObject<entrada>(responseText);
                string rspserver = msjdes.response;
                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    if(rspserver == "OK")
                    {
                        itemlist.Clear();
                        foreach (var item in msjdes.Data)
                        {
                            
                            itemlist.Add("PARTE:"+item.N_PARTE+"DESC:"+item.DESCRIPCION+"INV:"+item.INV_EXISTE+"MEDIDA"+item.UNI_MEDIDA);
                           
                        }
                        
                    }
                }

【问题讨论】:

  • 具体遇到了什么问题? CollectionViewListView 非常相似,转换它们通常很简单。由于您实际上还没有为您的 ListView 发布 XAML,因此很难给您具体的建议。也不清楚为什么不使用 msjdes.Data 作为 ItemsSource,因为它包含您需要显示的所有数据
  • 你说得对,我刚刚在 ItemsSource 中使用了 msjdes.data 并工作 :)

标签: c# json xamarin.forms


【解决方案1】:

根据你提供的代码,我写了一个小例子供你参考。

这里是 xaml 代码:

<StackLayout>
    <CollectionView x:Name="myTest">
        <CollectionView.ItemTemplate >
            <DataTemplate >
                <StackLayout>
                    <Label Text="{Binding N_PARTE}"></Label>
                    <Label Text="{Binding DESCRIPCION}"></Label>
                    <Label Text="{Binding INV_EXISTE}"></Label>
                    <Label Text="{Binding UNI_MEDIDA}"></Label>
                </StackLayout> 
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
</StackLayout>

这是cs代码:

string json = "{\"response\": \"OK\",\"Data\": [{\"N_PARTE\": \"POLEA PARA BULL\",\"DESCRIPCION\":\"POLEA PARA BULL C/BALERO Y ANILLOS\",\"INV_EXISTE\": \"0\",\"UNI_MEDIDA\": \"PZ\"}, {\"N_PARTE\": \"polea para bull c/baleros y anillo \",\"DESCRIPCION\": \"polea para bull c/balero y anillo \",\"INV_EXISTE\": \"1\",\"UNI_MEDIDA\": \"PZ\"},]}";
public MainPage()
{
     InitializeComponent();
     Class1 res= JsonConvert.DeserializeObject<Class1>(json);
     myTest.ItemsSource = res.Data;
}

这里是实体类代码:

public class Class1
{    
    public string N_PARTE { get; set; }
    public string DESCRIPCION { get; set; }
    public string INV_EXISTE { get; set; }
    public string UNI_MEDIDA { get; set; }
    public ObservableCollection<Class1> Data { get; set; }
}

截图如下:

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多