我有一个带有gridlayout的recyclerview.我想要的是当用户滚动到列表的末尾时(请参阅我的坏模型),应该有一个高度为50dp的空白空间,这与我的网格尺寸不同.
请注意,此空间仅在最末端可见,因为我不想更改布局.我可以这样做,以便recycerview的边距为50dp,但我不想这样做.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:scrollbars="vertical"
/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-gridlayout android-recyclerview
我有一个recyclerview,使用arraylist填充.当我从列表中删除项目时,它可以正常工作,直到最后一项被删除.下面是我的recyclerview适配器中的代码,它删除了一个项目.
public void removeItem(int position) {
itemsData.remove(position);
notifyItemRemoved(position);
}
Run Code Online (Sandbox Code Playgroud)
下面是崩溃日志.日志不会将我引导到我的代码中的指定位置.所以我不确定是什么导致了这个问题.
我做了一些测试并记录了位置.如果我将一个项目添加到arraylist和notifyItemInserted
在recyclerview中添加的项目的位置是0.如果我点击添加的项目,位置是0如果我删除该项目我删除它在位置0,但它崩溃了将项目移除为位置0时.
显示java.lang.NullPointerException:尝试在上$ android.support.v7.widget.OrientationHelper 2.getDecoratedStart(OrientationHelper空对象引用调用虚拟方法android.view.ViewGroup $的LayoutParams android.view.View.getLayoutParams()'.的java:316)在android.support.v7.widget.LinearLayoutManager.findOneVisibleChild(LinearLayoutManager.java:1633)在android.support.v7.widget.LinearLayoutManager.findFirstVisibleChildClosestToStart(LinearLayoutManager.java:1453)在android.support.v7.widget .LinearLayoutManager.computeScrollOffset(LinearLayoutManager.java:997)在android.support.v7.widget.LinearLayoutManager.computeVerticalScrollOffset(LinearLayoutManager.java:969)在android.support.v7.widget.RecyclerView.computeVerticalScrollOffset(RecyclerView.java:1175)在android.view.View.canScrollVertically(View.java:12835)在android.support.v4.view.ViewCompatICS.canScrollVertically(ViewCompatICS.java:35)在android.support.v4.view.ViewCompat $ ICSViewCompatImpl.canScrollVertically(ViewC ompat.java:1136)在android.support.v4.view.ViewCompat.canScrollVertically(ViewCompat.java:1528)在android.support.v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6594)在android.support .v7.widget.RecyclerView $ LayoutManager.onInitializeAccessibilityEvent(RecyclerView.java:6573)位于android.support.v7.widget.LinearLayoutManager.onInitializeAccessibilityEvent(LinearLayoutManager.java:204)的android.support.v7.widget.RecyclerViewAccessibilityDelegate.onInitializeAccessibilityEvent(RecyclerViewAccessibilityDelegate) .java:66)在android.support.v4.view.AccessibilityDelegateCompat $ AccessInDegateJetBeanImpl $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompat.java:228)在android.support.v4.view.AccessibilityDelegateCompatJellyBean $ 1.onInitializeAccessibilityEvent(AccessibilityDelegateCompatJellyBean.java:56). view.View.onInitializeAccessibilityEvent(View.java:5439)at android.view.View.sendAccessibilityEventUncheckedInternal(V iew.java:5312)在android.view.View $ AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:20823)在android.support.v4.view.AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatIcs.java:117)在android.support.v4.view .AccessibilityDelegateCompat $ AccessibilityDelegateIcsImpl.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:210)at android.support.v4.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:358)at android.support.v4.view.AccessibilityDelegateCompat $ AccessibilityDelegateJellyBeanImpl $ 1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat. java:255)在android.sview.View.View.View.View.View.RunImpl上的android.sview.View.sendAccessibilityEventUnchecked(View.java:5297)的android.support.v4.view.AccessibilityDelegateCompatJellyBean $ 1.sendAccessibilityEventUnchecked(AccessibilityDelegateCompatJellyBean.java:82)$ SendWindowContentChangedAccessibilityEvent.run( ViewRootImpl.java:6934)在andro android.view.ViewRootImpl.not上的android.view.ViewRootImpl.notifySubtreeAccessibilityStateChanged(ViewRootImpl.java:6274)的android.view.ViewRootImpl.postSendWindowContentChangedCallback(ViewRootImpl.java:6161)中的id.view.ViewRootImpl $ SendWindowContentChangedAccessibilityEvent.runOrPost(ViewRootImpl.java:6960)位于android.view.ViewGroup.notGroup上的android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772)上的.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772)处于android.view.ViewGroup.notifySubtreeAccessibilityStateChanged( ViewGroup.java:2772)位于android.view.ViewGroup.notGroup上的android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(ViewGroup.java:2772)上的android.view.ViewGroup.notifySubtreeAccessibilityAccessibilityAcableAccessibilityStateChanged(ViewGroup.java:2772) )在android.view.ViewGroup.notifySubtreeAccessibilityStateChanged(
非常感谢任何帮助!
使用滑动android库我将图像作为位图(参见滑动文档),然后我尝试使用renderscript和ScriptIntrinsicBlur模糊位图,这是一个高斯模糊.(取自此stackoverflow帖子)
Glide.with(getApplicationContext())
.load(ImageUrl)
.asBitmap()
.into(new SimpleTarget<Bitmap>(300,200) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
RenderScript rs = RenderScript.create(mContext); // context = this. this referring to the activity
final Allocation input = Allocation.createFromBitmap( rs, resource, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT );
final Allocation output = Allocation.createTyped( rs, input.getType() );
final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create( rs, Element.U8_4( rs ) );
script.setRadius(8f);
script.setInput(input);
script.forEach(output);
output.copyTo(resource);
mImageView.setImageBitmap(resource);
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢谢谢.:)
我正在使用MVVM模式,并希望使用可观察的集合更新ListView.我经历了几个SO问题,但看不出我做错了什么.任何帮助深表感谢.谢谢.
View.xaml
命名空间: xmlns:local="clr-namespace:MusicPlayer.ViewModel"
DataContext的
<UserControl.DataContext>
<local:AllTracksViewModel/>
</UserControl.DataContext>
Run Code Online (Sandbox Code Playgroud)
列表显示
<ListView x:Name="TrackListView"
ItemsSource="{Binding Path=TrackListObservable}">
...
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="250" DisplayMemberBinding="{Binding Title}" />
<GridViewColumn Header="Album" Width="200" DisplayMemberBinding="{Binding Album}" />
<GridViewColumn Header="Artist" Width="150" DisplayMemberBinding="{Binding Artist}" />
<GridViewColumn Header="Duration" Width="100" DisplayMemberBinding="{Binding FormattedDuration}" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
ViewModel.cs
public class AllTracksViewModel
{
public ObservableCollection<Track> TrackListObservable { get; private set; }
public AllTracksViewModel()
{
TrackListObservable = new ObservableCollection<Track>();
}
}
Run Code Online (Sandbox Code Playgroud)
我确认项目肯定会被添加到observable中.再一次感谢你的帮助.