Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用了ListView创建者,但没有其他方法_C#_Android_Listview_Xamarin - Fatal编程技术网

C# 调用了ListView创建者,但没有其他方法

C# 调用了ListView创建者,但没有其他方法,c#,android,listview,xamarin,C#,Android,Listview,Xamarin,这是我第一次使用ListView,我遇到了一些麻烦。我确信我有一项技术实施得不正确。然而,在互联网上进行了大量搜索并观看了关于列表视图的教程之后,我还没有找到答案 不过,这偶尔会显示出来,大多数时候它只是没有启动。当它显示时,屏幕关闭,我运行应用程序,打开设备屏幕,它显示列表。这是非常偶然的 但是,每次调用构造函数之后,Count和GetView都不会被调用 所有内容似乎都显示在下面我的main.axml文件中 <?xml version="1.0" encoding="utf-8"?&g

这是我第一次使用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>

在我的主要活动中,我追踪了所有的事情,所有的事情都被调用了

下面我将介绍如何创建发送给正在使用的自定义适配器的列表。我有一个名为RootObject的自定义对象,它保存一个项目列表

 var list = JsonConvert.DeserializeObject<RootObject>(response);
ListView myItems = FindViewById<ListView>(Resource.Id.itemView);
PIAdapter itemViewAdapter = new PIAdapter(this, list);
myItems.Adapter = itemViewAdapter;
var list=JsonConvert.DeserializeObject(响应);
ListView myItems=FindViewById(Resource.Id.itemView);
PIAdapter itemViewAdapter=新的PIAdapter(此,列表);
myItems.Adapter=itemViewAdapter;
这一切似乎都奏效了

我的适配器构造函数甚至被调用,我可以确认列表中有两项

但是,当我在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 = context;
            Console.WriteLine("[My App] Step 10" + list.items.Count);

        }
        public override int Count
        {
            get
            {

                return list.items.Count;
            }
        }

        public override Java.Lang.Object GetItem(int position)
        {
            return null;
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            Console.WriteLine("[My App] - Step 11");
            View view = convertView;
            if(view == null)
            {
                view = context.LayoutInflater.Inflate(Resource.Layout.myItem, null);
            }

            var item = list.items[position];

            ImageView customImage = view.FindViewById<ImageView>(Resource.Id.customImage);
            TextView customName = view.FindViewById<TextView>(Resource.Id.customName);
            TextView customBarcode = view.FindViewById<TextView>(Resource.Id.customBarcode);
            TextView customUp = view.FindViewById<TextView>(Resource.Id.customUpVote);
            TextView customDown = view.FindViewById<TextView>(Resource.Id.customDownVote);

            customName.Text = item.name;
            customBarcode.Text = item.barcode;
            customUp.Text = item.upvotes;
            customDown.Text = item.downvotes;

            //Koush.UrlImageViewHelper.SetUrlDrawable(customImage, "http://api.myurl.com/images/" + item.barcode + ".png", Resource.Drawable.myicon);

            return view;
        }


    }
}
公共类PIAdapter:BaseAdapter
{
RootObject list=新的RootObject();
活动语境;
公共PIAdapter(活动上下文、根对象列表)
{
this.list=列表;
this.context=上下文;
Console.WriteLine(“[My App]步骤10”+list.items.Count”);
}
公共覆盖整数计数
{
得到
{
返回list.items.Count;
}
}
public override Java.Lang.Object GetItem(int位置)
{
返回null;
}
公共覆盖长GetItemId(int位置)
{
返回位置;
}
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
Console.WriteLine(“[My App]-步骤11”);
视图=转换视图;
如果(视图==null)
{
视图=context.LayoutInflater.Inflate(Resource.Layout.myItem,null);
}
变量项=列表项[位置];
ImageView customImage=view.findviewbyd(Resource.Id.customImage);
TextView customName=view.findviewbyd(Resource.Id.customName);
TextView customBarcode=view.FindViewById(Resource.Id.customBarcode);
TextView customUp=view.findviewbyd(Resource.Id.customUpVote);
TextView customDown=view.findviewbyd(Resource.Id.customDownVote);
customName.Text=item.name;
customBarcode.Text=item.barcode;
customUp.Text=item.upvows;
customDown.Text=item.down;
//Koush.UrlImageViewHelper.SetUrlDrawable(自定义图像)http://api.myurl.com/images/“+item.barcode+”.png”,Resource.Drawable.myicon);
返回视图;
}
}
}
如果需要,我正在编辑此文件以包含myItem.axml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/relativeLayout1">
        <ImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/customImage" />
        <TextView
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/customImage"
            android:id="@+id/customBarcode" />
        <TextView
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/customBarcode"
            android:id="@+id/customName"
            android:layout_toRightOf="@id/customImage" />
        <ImageView
            android:src="@drawable/up"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/customImage"
            android:id="@+id/customUp"
            android:layout_below="@id/customName" />
        <TextView
            android:text="0"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/customUp"
            android:id="@+id/customUpVote"
            android:layout_below="@id/customName" />
        <ImageView
            android:src="@drawable/down"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/customUpVote"
            android:id="@+id/customDown"
            android:layout_below="@id/customName" />
        <TextView
            android:text="0"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/customDown"
            android:id="@+id/customDownVote"
            android:layout_below="@id/customName" />
    </RelativeLayout>
</LinearLayout>

粘贴您的代码并在我的设备和模拟器中进行测试。 我不知道你说的那个问题

但我改变了一些事情

这是我的活动代码:

var list = JsonConvert.DeserializeObject<RootObject>("{\"items\":[{\"barcode\": \"690443240066\",\"name\": \"gjjnn\",\"upvotes\": \"1\",\"downvotes\": \"0\",\"updated\": \"1466479409028\"},{\"barcode\": \"038000845031\",\"name\": \"fhj\",\"upvotes\": \"2\",\"downvotes\": \"1\",\"updated\": \"1466396732038\"}]}");
ListView myItems = FindViewById<ListView>(Resource.Id.itemView);
PIAdapter itemViewAdapter = new PIAdapter(this, list);
myItems.Adapter = itemViewAdapter;
var list=JsonConvert.DeserializeObject(“{”items\”:[{”条形码\“:“690443240066\”,“名称\“:“GJNN\”,“UpVoces\”:“1\”,“DownVoces\”:“0\”,“Update\”:“1466479409028\”,“{”条形码\“:“038000845031\”,“姓名\“:“fhj\”,“UpVoces\”:“2\”,“DownVoces\”,“DownVoces\”:“146679409028\”,“Update\”:“14663838\”);
ListView myItems=FindViewById(Resource.Id.itemView);
PIAdapter itemViewAdapter=新的PIAdapter(此,列表);
myItems.Adapter=itemViewAdapter;
并在主布局中对此进行了更改:



Console.WriteLine中的值(“[My App]步骤10”+list.items.Count”)?因为我忘了在10后面加空格,所以我得到了这个。06-21 00:56:32.266 I/mono标准输出(21134):[My App]步骤102如果有帮助,这是我的数据源。它是一个json,有两个项目{“items”:[{“barcode”:“69044340066”,“name”:“gjnn”,“upvots”:“1”,“downvots”:“0”,“updated”:“1466479409028”},{“barcode”:“038000845031”,“name”:“fhj”,“upvots”:“2”,“downvots”:“1”,“updated”:“14663963732038”}您何时以及如何填写该列表?请向我们提供代码pleaseIs myItems.Adapter=itemViewAdapter在主线程下运行?感谢您的回复。这个周末我会去看看。这是一个漫长的工作周,这是一个附带项目。由于应用程序上的其他功能,本周末还没有被推迟。我明天会看的。我还没有机会把所有的东西都看一遍。工作有点搞砸了。我授予了悬赏,因为你的数据是我目前所掌握的最好的数据,我会在这里回复,只要我有机会查看一下。好的,谢谢。我保证该代码在设备和模拟器上运行良好。@StevenDStanton如果这对您有效,请将其标记为正确,以便帮助其他人。非常感谢。