这是我第一次使用ListView而且遇到了一些麻烦.我确信我的技术实现不正确.然而,经过大量搜索互联网和观看列表视图的教程后,我还没有想出来.
然而,这有时会显示,大部分时间它都没有启动.当它显示时,它是在屏幕关闭时我运行应用程序并打开设备屏幕并显示列表.尽管如此,这非常受欢迎.
每次都会调用构造函数,但是之后,从不调用Count和GetView.
似乎所有内容都显示在我的main.axml文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:orientation="vertical"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/linearLayout1">
<Spinner
p1:layout_width="match_parent"
p1:layout_height="50.5dp"
p1:id="@+id/stores"
p1:layout_marginBottom="16.0dp" />
<Button
p1:id="@+id/scanItem"
p1:layout_width="fill_parent"
p1:layout_height="wrap_content"
p1:text="Scan Item" />
<ListView
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/itemView" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在我的主要活动中,我追踪了一切,一切都被调用了.
为了给你一些背景知识,我是如何创建我发送到我正在使用的自定义适配器的列表.我有一个名为RootObject的自定义对象,它包含一个Items列表
var list = JsonConvert.DeserializeObject<RootObject>(response);
ListView myItems = FindViewById<ListView>(Resource.Id.itemView);
PIAdapter itemViewAdapter = new PIAdapter(this, list);
myItems.Adapter = itemViewAdapter;
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有效
我的适配器构造函数甚至被调用,我可以确认我的列表中有2个项目.
但是,当我在Count和GetView中包含Console.WriteLine时,99%的时间都不会调用它们.然而,我可以调用构造函数中的所有字段并确认我已填入值,并且在某些条件下它可以正确显示.
public class PIAdapter : BaseAdapter
{
RootObject list = new RootObject();
Activity context;
public PIAdapter(Activity context, RootObject list)
{
this.list = list;
this.context = …Run Code Online (Sandbox Code Playgroud) 我已经读过其他几个有这个问题的人,并且我尝试了这些方法。但是,我得到的结果很奇怪,我无法确定。
我正在使用http://json2csharp.com/#构建与convert方法一起使用的类。
在我的代码中,我正在使用以下库
using System;
using RestSharp;
using Newtonsoft.Json;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
using ZXing;
using ZXing.Mobile;
Run Code Online (Sandbox Code Playgroud)
我有一种方法可以从我的api调用中获取json字符串,并使用Json.NET将其转换为c#对象
public void convert(String response)
{
Console.WriteLine("Response: " + response);
Console.WriteLine("Check 1");
var list = JsonConvert.DeserializeObject<List<RootObject>>(response);
Console.WriteLine("Check 2");
Console.WriteLine(list);
Console.WriteLine("Check 3");
for (int i = 0; i < list.Count; i++) // Loop with for.
{
Console.WriteLine("Check 4");
Console.WriteLine("Pass: " + i);
Console.WriteLine(list[i]);
}
Console.WriteLine("Check 5");
}
public class Item
{
public …Run Code Online (Sandbox Code Playgroud)