项目未显示在回收站视图 Xamarin android 中

时间:2020-12-27 14:43:05

标签: c# android android-recyclerview xamarin.android

我正在 Xamarin android 应用程序中实现回收器视图,但尽管 InitData() 方法已正确执行,但在调试应用程序时未显示项目。

这是实现回收者视图的 mainactivity.cs 代码:

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FinalProject_PU.Helper
{
    class Data
    {
        public string IssueImage { get; set; }
        public string UserImage { get; set; }
        public string UserName { get; set; }
        public DateTime IssueDate { get; set; }
        public string IssueStatement { get; set; }


        public int GetElevatedDates()
        {
            var ElevatedDays = (IssueDate.Date - DateTime.Now.Date).Days;
            return ElevatedDays;
        }

        public string ElevatedDays
        {
            get { return ElevatedDays; }
            set
            {
                if (GetElevatedDates() == 0)
                {
                    ElevatedDays = "Today";
                }
                else
                {
                    ElevatedDays = GetElevatedDates() + "Days";
                }
            }
        }
    }
}
 protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.Home);

            byte[] arr = Convert.FromBase64String(UserInfoHolder.Profile_pic);

            imgwriteIssue = (ImageView)FindViewById(Resource.Id.imgwriteIssue);
            imgwriteIssue.Click += delegate
            {
                var i = new Intent(this, typeof(CreateIssue));
                this.StartActivity(i);
            };
            CircleImageView img = FindViewById<CircleImageView>(Resource.Id.circleImageView1);
            Android.Graphics.Bitmap bitmap = BitmapFactory.DecodeByteArray(arr, 0, arr.Length);
            img.SetImageBitmap(bitmap);



            iconfunds = (ImageView)FindViewById(Resource.Id.iconFunds);
            iconfunds.Click += Iconfunds_Click;

            notifications = (ImageView)FindViewById(Resource.Id.iconNotifications);
            notifications.Click += Notifications_Click;

            map = (ImageView)FindViewById(Resource.Id.iconMap);
            map.Click += Map_Click;

            setting = (ImageView)FindViewById(Resource.Id.iconSettings);
            setting.Click += Setting_Click;

           

            recycler = FindViewById<RecyclerView>(Resource.Id.recyclerView1);
            recycler.HasFixedSize = true;
            //  layoutManager = new LinearLayoutManager(this);
            layoutManager = new GridLayoutManager(this, 1, GridLayoutManager.Horizontal, false);
            recycler.SetLayoutManager(layoutManager);
            InitData();
            adapter = new RecyclerViewAdapter(lstData);
            recycler.SetAdapter(adapter);

            
        }

private async void InitData()
        {
            lstData = await IssueController.FetchPostList();
        }

fetchallpost() 方法从数据中获取所有问题并返回它的列表。

但它没有显示在回收站视图中,并且在打开 Homeactivity.cs 后应用程序在几秒钟内停止

这是我的程序自动中断的回收器视图适配器类

RecyclerViewAdapter.cs

using Android.Support.V7.Widget;
using Android.Views;
using Android.Widget;
using Refractored.Controls;
using System.Collections.Generic;
using System;
using Android.Content;
using AndroidX.Core.Graphics;

namespace FinalProject_PU.Helper
{
    class RecyclerViewHolder : RecyclerView.ViewHolder
    {
        public ImageView imageview { get; set; }
        public CircleImageView UserImage { get; set; }
        public TextView UserName { get; set; }
        public TextView IssueDate { get; set; }
        public TextView IssueStatement { get; set; }

        Android.Graphics.Typeface tf;
        //
        // public TextView Description { get; set; }
        public RecyclerViewHolder(Android.Views.View itemView) : base(itemView)
        {
            imageview = itemView.FindViewById<ImageView>(Resource.Id.imageView1);
            UserImage = itemView.FindViewById<CircleImageView>(Resource.Id.imgProfile);
            UserName = itemView.FindViewById<TextView>(Resource.Id.tvname);
            IssueDate = itemView.FindViewById<TextView>(Resource.Id.tvtime);
            IssueStatement = itemView.FindViewById<TextView>(Resource.Id.tvinfo);
            //beauttification
            
            /*
            tf = Typeface.CreateFromAsset(Assets, "Quicksand-Bold.otf");
            IssueStatement.SetTypeface(tf, TypefaceStyle.Bold);

           
            tf = Typeface.CreateFromAsset(Assets, "Quicksand-Bold.otf");
            UserName.SetTypeface(tf, TypefaceStyle.Bold);

           
            tf = Typeface.CreateFromAsset(Assets, "Quicksand-Bold.otf");
            IssueDate.SetTypeface(tf, TypefaceStyle.Bold);
            */
        }
    }
    class RecyclerViewAdapter : RecyclerView.Adapter
    {
        private List<Data> lstData = new List<Data>();

        public RecyclerViewAdapter(List<Data> lstData)
        {
            this.lstData = lstData;
        }

        public override int ItemCount
        {
            get
            {
                return lstData.Count;
            }
        }

        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            RecyclerViewHolder viewHolder = holder as RecyclerViewHolder;
            byte[] arr0 = Convert.FromBase64String(lstData[position].IssueImage); //IssueImage
            Bitmap b0 = BitmapFactory.DecodeByteArray(arr0, 0, arr0.Length);
            viewHolder.imageview.SetImageBitmap(b0);
            byte[] arr1 = Convert.FromBase64String(lstData[position].UserImage); //UserImage
            Bitmap b1 = BitmapFactory.DecodeByteArray(arr1, 0, arr1.Length);
            viewHolder.UserImage.SetImageBitmap(b1); //
            viewHolder.UserName.Text = lstData[position].UserName;
            viewHolder.IssueDate.Text = lstData[position].ElevatedDays;
            viewHolder.IssueStatement.Text = lstData[position].IssueStatement;

        }

        public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            LayoutInflater inflater = LayoutInflater.From(parent.Context);
            Android.Views.View itemView = inflater.Inflate(Resource.Layout.items, parent, false);
            return new RecyclerViewHolder(itemView);
        }
    }
}```


I have tried debugging the application to see what is causing the problem and it was found out that application is breaking when it reaches on this line in recycler view constructor.
I have made sure that the fetchallpost() method is actually returning list with data.

     imageview = itemView.FindViewById<ImageView>(Resource.Id.imageView1);

please help me with this

0 个答案:

没有答案