我正在制作一个应用程序,其中我有一个recyclerview
,其中包含一些固定元素,这些元素在应用程序创建后立即添加。
我想做的是,当按下按钮
时,会将一个元素添加到RecyclerView
中,而当关闭它并再次启动它时,该新元素仍然保留。
此外,我还使用IndicatorView滚动查看RecyclerView的元素。当我用按钮
添加一些元素时,发生在我身上的问题是新元素被创建了,回收视图
的大小增加了,但指示视图
没有增加,并且我无法滚动查看添加的新元素,此外,当重新启动应用程序时,这些用按钮添加的新元素会自行删除。
向recyclerview
添加新元素时,如何增加indicatorview
的大小?
如何使用按钮
上的onClick将元素永久添加到RecolyerView中?
class MainActivity : AppCompatActivity() {
private lateinit var viewPager: ViewPager
private lateinit var pagerAdapter: PageAdapter
private val animalList = arrayListOf<String>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
animalList.add("1")
animalList.add("2")
animalList.add("3")
animalList.add("4")
animalList.add("5")
animalList.add("6")
animalList.add("7")
animalList.add("8")
animalList.add("9")
animalList.add("10")
animalList.add("11")
animalList.add("12")
animalList.add("13")
animalList.add("14")
animalList.add("15")
animalList.add("16")
animalList.add("17")
var size = animalList.size / 4
if ((animalList.size % 4 ) > 0)
size += 1
pagerAdapter = PageAdapter(supportFragmentManager, size, animalList)
ADDbutton.setOnClickListener {
animalList.add("lol")
animalList.add("añadido jaja")
Log.i("AAA","Added: "+ animalList +" SIZE: " + animalList.size)
pagerAdapter.notifyDataSetChanged()
}
viewPager = findViewById(R.id.view_pager)
pagerAdapter = PageAdapter(supportFragmentManager, size, animalList)
viewPager.adapter = pagerAdapter
}
}
class ItemFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// Creates the view controlled by the fragment
val view = inflater.inflate(R.layout.page, container, false)
val recycler = view.findViewById<RecyclerView>(R.id.recycler)
// Retrieve and display the movie data from the Bundle
val args = arguments
recycler.layoutManager = GridLayoutManager(activity,2,GridLayoutManager.VERTICAL,false)
recycler.adapter = ItemAdapter(args?.getStringArrayList("items")!!, this.activity!!)
return view
}
companion object {
fun newInstance(items: ArrayList<String>): ItemFragment {
val args = Bundle()
args.putStringArrayList("items", items)
val fragment = ItemFragment()
fragment.arguments = args
return fragment
}
}
}
class PageAdapter(fragmentManager: FragmentManager, private val size: Int, private val items: ArrayList<String>) :
FragmentStatePagerAdapter(fragmentManager) {
override fun getItem(position: Int): Fragment {
val firstItem = ((position + 1) * 4) - 3
val lastItem = ((position + 1) * 4)
val itemSet = arrayListOf<String>()
for (i in firstItem..lastItem) {
if (i <= items.size)
itemSet.add(items[i - 1])
}
return ItemFragment.newInstance(itemSet)
}
override fun getCount(): Int {
return size
}
}
class ItemAdapter(private val items: ArrayList<String>, private val context: Context) : RecyclerView.Adapter<ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(context).inflate(R.layout.item, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder?.title?.text = items.get(position)
}
override fun getItemCount(): Int {
return items.size
}
}
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val title: TextView = view.title_view
val item: RelativeLayout = view.item_view
}
null
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:attrs="http://schemas.android.com/tools"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginBottom="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline2">
</androidx.viewpager.widget.ViewPager>
<com.rd.PageIndicatorView
android:id="@+id/pageIndicatorView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view_pager"
app:piv_animationType="worm"
app:piv_dynamicCount="true"
app:piv_interactiveAnimation="true"
app:piv_radius="8dp"
app:piv_selectedColor="#000000"
app:piv_unselectedColor="#999999"
app:piv_viewPager="@id/view_pager"
attrs:piv_padding="8dp" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_begin="251dp"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/ADDbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
app:layout_constraintBottom_toTopOf="@+id/view_pager"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
null
null
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/item_view"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_margin="10dp"
android:background="@color/teal_700">
<TextView
android:id="@+id/title_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>
null
null
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/recycler"
android:layout_height="match_parent"/>
null
有两个问题。
>
您需要理解持久化和非持久化数据之间的区别。现在只需在内存中创建列表。您还需要将数据存储在某个地方。最合适的位置是数据库、文件或web后端。
在AddButton
ClickListener
中,您正在向Animallist
添加项。但您不在PageAdapter
中设置此更新的列表。最简单的方法是使items
参数成为PagerAdapter
的Consturctor中的public var
:
class PageAdapter(
fragmentManager: FragmentManager,
private val size: Int,
public var items: ArrayList<String>) : FragmentStatePagerAdapter(fragmentManager) {
}
更新后的click侦听器如下所示:
ADDbutton.setOnClickListener {
animalList.add("lol")
animalList.add("añadido jaja")
Log.i("AAA","Added: "+ animalList +" SIZE: " + animalList.size)
pagerAdapter.items = animalList
pagerAdapter.notifyDataSetChanged()
}
另外,大小是固定的。在构造函数中传递参数并在getCount方法中使用它:
override fun getCount(): Int {
return size
}
相反,getcount
应该根据当前的items.size
值计算项目计数。
问题内容: 每当我使用时,都会添加新目录。但是,一旦我关闭python,列表将恢复为以前的值(默认值)。如何将目录永久添加到PYTHONPATH? 问题答案: 你需要将新目录添加到环境变量中PYTHONPATH,并用冒号与其之前的内容分隔开。在任何形式的Unix中,你都可以在启动脚本中执行此操作,该脚本适合于你正在使用的任何shell(.profile或取决于你喜欢的shell),该命令又取决于所
问题内容: 我搜索了在jtable中添加按钮的教程,并从http://tips4java.wordpress.com/2009/07/12/table-button- column/ 找到了一个类文件, 该按钮在哪里设置? 问题答案: 它是通过DefaultTableModel中的数据在表渲染器和编辑器中自动设置的。例如,对于表编辑器,代码为: 表模型的值在哪里。有关详细信息,请参见ButtonC
我在边框的中心有一个标题栏。对于链接哈希图中的每个条目,我想在标题栏中添加一个按钮。这个标题栏已经存在于fxml文件中,并且具有fx: id field dContainer。 如果一次添加一个键值对,按钮将一个接一个出现。但是,当我试图通过从文本文件导入链接的hashmap一次添加它们时,按钮不会出现。它将加载一个条目,然后抛出nullpointerexception。 导入文本文件和将条目添加
问题内容: 我想添加除“确定”按钮以外的另一个按钮,该按钮应仅关闭警报。我希望其他按钮调用某个功能。 我如何在此警报中添加另一个按钮,然后单击该按钮,然后允许它调用一个函数,因此可以说我们希望新按钮进行调用: 问题答案: Swifty方法是使用新的UIAlertController和闭包: 斯威夫特3:
问题内容: 它可以在默认键盘上正常工作,但是我无法在数字键盘上使用它。 有任何想法吗? 问题答案: 据我所知,您不能在键盘部分上添加“完成”按钮。您必须在或中添加一个(如果您使用的是)。 查看文档以获取更多信息。 编辑 :检查此问题以获取有关如何执行此操作的示例。 编辑2 :Swift中的类似示例。 编辑3 :来自编辑2的代码,因为链接可能过期。 斯威夫特4.2
问题内容: 我如何(最好)将nodejs永久安装/添加到(Jenkins)Docker映像中? 结果是同时包含Jenkins和nodejs的docker映像。 目的是将nodejs作为全局工具安装在Jenkins容器中。要获得 nodejs 的 安装文件夹, 必须知道。 我看到了例如这种解决方案,但是Nodejs的安装文件夹是什么? 运行curl -sL https://deb.nodesourc