如何解决RecyclerView - 如何滚动到所需数据项的位置通过绑定?
我是 android 编程的新手,我有一个问题,也许我只是不想找到答案,但我浪费了几天时间。
我使用 RecyclerView 来处理我的数据
private JavaList<Good> goods = new JavaList<Good>();
public class Good : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(propertyName));
}
public string name;
public int quality; //need
public int real_quality; // Now
}
我有适配器、支架等,所有文档... 我从条码扫描器收到条码
public class MyScanReceiver : broadcastReceiver
{
public interface BarcodeDataInterface
{
void OnBarcodeReceived(string barcode);
}
private BarcodeDataInterface mBarcodeDataInterface;
// some code
}
在 MainActivity.cs 中:
public void OnBarcodeReceived(string barcode)
{
Good g = GetByBarcode(barcode); // get good by barcode,if (g == null)
{
Console.WriteLine($"Not found {barcode}.");
return;
}
g.real_quantity++;
g.isChecked = g.real_quantity >= g.quantity;
recyclerView1.ScrollToPosition( ?? POSITION ?? );
rvAdapter.NotifyDataSetChanged();
}
现在 我需要滚动到已创建好的位置,但是如何获取该位置?
也许我没有做对所有事情,还有其他方法吗? 我期待任何意见和建议! :)
解决方法
您可以从您的 RecycleView 源中的条形码扫描仪获取您的商品的位置。
例如:
private JavaList<Good> goods = new JavaList<Good>(); //this is the source of your recycleview
当您通过条形码收到货物时:
public void OnBarcodeReceived(string barcode)
{
Good g = GetByBarcode(barcode); // get good by barcode,if (g == null)
{
Console.WriteLine($"Not found {barcode}.");
return;
}
g.real_quantity++;
g.isChecked = g.real_quantity >= g.quantity;
int position;
for (int i = 0; i < goods.Count; i++)
{
if (goods[i].name.Equals(g.name))
{
position = i; //the position is what you want
}
}
recyclerView1.ScrollToPosition(position);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。