我尝试在RecyclerView中通过滑动实现删除。在滑动项目后,我调用notifyItemChanged()并在onBindViewHolder方法中更改视图的可见性。
public void onBindViewHolder(CustomViewHolder holder, int position) {
if (isPendingRemoval(position)) {
holder.textView.setVisibility(View.INVISIBLE);
holder.undoButton.setVisibility(View.VISIBLE);
final int adapterPosition = holder.getAdapterPosition();
holder.undoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable pendingRemovalRunnable = mPendingRunnables.get(adapterPosition);
mHandler.removeCallbacks(pendingRemovalRunnable);
mPendingRunnables.remove(adapterPosition);
notifyItemChanged(adapterPosition);
}
});
} else {
holder.textView.setVisibility(View.VISIBLE);
holder.undoButton.setVisibility(View.INVISIBLE);
holder.textView.setText(someText);
}
}
但在删除后,项目的高度会发生变化。截图
项目.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingRight="8dp"
android:paddingLeft="@dimen/activity_horizontal_margin">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/item_text"
android:layout_gravity="center_vertical"/>
<Button
android:id="@+id/item_button_undo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/button_undo_text"
android:layout_gravity="end|center_vertical"
style="@style/Base.Widget.AppCompat.Button.Borderless"/>
</FrameLayout>
我能做些什么来节省物品的高度?
您可以尝试将按钮宽度设置为match_parent,只需更改其可见性而不是TextView的可见性(显然给出了项目的高度),这样,项目应保持高度和宽度,按钮应在TextView上可见隐藏它
public void onBindViewHolder(CustomViewHolder holder, int position) {
if (isPendingRemoval(position)) {
// holder.textView.setVisibility(View.INVISIBLE);
holder.undoButton.setVisibility(View.VISIBLE);
final int adapterPosition = holder.getAdapterPosition();
holder.undoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Runnable pendingRemovalRunnable = mPendingRunnables.get(adapterPosition);
mHandler.removeCallbacks(pendingRemovalRunnable);
mPendingRunnables.remove(adapterPosition);
notifyItemChanged(adapterPosition);
}
});
} else {
// holder.textView.setVisibility(View.VISIBLE);
holder.undoButton.setVisibility(View.INVISIBLE);
holder.textView.setText(someText);
}
}
我目前正在编写一个应用程序,我希望有一个800x600像素的最小场景大小。在第一次尝试中,我简单地使用了和,但是这些值对整个窗口都有影响,而不仅仅是对场景,所以只显示了场景的7xx x5xx。因此,我搜索了Stage javadoc并找到了,这正是我所需要的,调用后Stage的大小大于800x600,并且场景完全显示为800x600像素。 现在唯一的问题是,这个方法调用没有将舞台宽度和高度保存在舞
我有一些大型公司Spring项目对我来说是未知的,我需要在上面执行这种任务: “我有方法A和方法B,在方法A的执行过程中,可以调用方法B吗?” 我发现IntelliJ思想中有函数方法调用层次结构。我可以在方法B上执行这个函数并生成调用层次结构,在这里我可以为方法A执行serarch。不幸的是,在计算这个层次结构时,IntelliJ冻结了,因为它太大了,工作5个小时后就崩溃了。 我需要比Intell
问题内容: 我遇到了一个旧的可变高度导航问题:顶部导航,底部导航。异步加载数据时,导航可以更改高度,因此内容的边距也必须随之更改。 我希望这是自给自足的。因此,没有代码在何处加载数据,而仅在涉及的html-elements / directives中。 目前,我正在AngularJS 1.2.0中使用如下计时器进行操作: 这有一个明显的 缺点,那就是使用计时器 (我觉得这很丑陋),并且 在调整导航
我有一个问题与OneTo多关系。我正在使用sping-mvc和sping-Security和Hibernate4。 我正在为所有人使用注释。 我的问题是在实体战争中,当我看到属性列表玩家调试时,我看到,当我单击它时, 我也得到了这个例外: 实体: - 我的DAO
请注意:我已经检查了SO上的其他问题,虽然我可以消除错误,但它还有其他问题。 下面是我现有的代码: 我的适配器类: 修改代码查看各种答案: 现在,我没有得到错误,但是每次都被调用两次,并且recyclerview中的视图每次都在刷新。我做错了什么?请参阅logcat输出:
谢谢,这是我的代码: