c# - 回收站视图不适用于 Xamarin Android 中的数据库
问题描述
我正在我的 xamarin android 应用程序中实现 recyclerview,它的工作方式非常奇怪
- 首先,当我在列表中硬编码项目(数据)时,我的应用程序停止,当我使用数据库将数据放入列表时,它不会停止工作,但不会显示任何视图。
这是我的 HomeActivity.cs 代码
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.Home);
InitData();
recycler = FindViewById<RecyclerView>(Resource.Id.recyclerView1);
recycler.HasFixedSize = true;
// layoutManager = new LinearLayoutManager(this);
layoutManager = new GridLayoutManager(this, 1, GridLayoutManager.Horizontal, false);
recycler.SetLayoutManager(layoutManager);
adapter = new RecyclerViewAdapter(lstData);
recycler.SetAdapter(adapter);
}
private void InitData()
{
//foreach (var item in await IssueController.FetchPostList())
//{
// lstData.Add(item);
//}
lstData.Add(new Data()
{
IssueImage = "base64stringofimage",
UserImage = "base64stringofimage",
IssueDate = DateTime.Now,
UserName = "asadullah",
IssueStatement = "some issue statement"
});
}
我尝试调试更具体的导致停止的原因,我意识到它在 recyclerviewadapter 类中的 OnBindViewHolder() 方法结束时停止。
这是 RecyclerViewAdapter 类:
RecyclerViewAdapter.cs
using Android.Graphics;
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);
}
}
}
解决方案
推荐阅读
- instagram-api - Instagram Basic Display API,我们可以跳过“保存您的登录信息吗?”步骤?
- windows - 有没有办法在 Windows 8.1 中安装 Scala Ammonite-REPL
- c# - Xamarin 表单和 Firebase:阅读规则
- angular - 如何在 Angular 8 中完全加载 iframe 内容后进行函数调用
- android - 当我从颤动的资产中获取时的ImageIcon颜色问题
- java - Spring 批处理 - @StepScope 抛出 IllegalArgumentException:无法子类化最终类类 com.sun.proxy.$Proxy118
- mongodb - 获取总用户列表以及在 OR 条件下匹配的 mongodb 中的活动用户
- authentication - 拒绝在中显示“login.microsoftonline.com”
- javascript - how to use function on Constructor, TodoList
- java - Error "java.lang.OutOfMemoryError: Java heap space" in jenkins job console