刚刚接触LayoutInflater
及其功能,并提出了一个愚蠢的问题。我正在制作一个游戏布局,其中玩家进行了未知数量的猜测,我想将每个新猜测扩展到guessContainer
以上所有以前的猜测。
相关xml:
<LinearLayout
android:id="@+id/guessContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:orientation="vertical"></LinearLayout>
相关的java:
private void addNewGuess(){
ViewGroup guessContainer = (ViewGroup)findViewById(R.id.guessContainer);
View newGuess = getLayoutInflater().inflate(R.layout.guess_new, null);
guessContainer.addView(newGuess);
}
上述代码按预期工作 - 每次调用addNewGuess
时,都会在所有其他代码下生成R.layout.guess_new
的新副本。有没有办法扭转这种行为并使用LayoutInflater
在其他人之上进行新的猜测或者我是否认为这一切都错了?
答案 0 :(得分:2)
您可以使用addView(View child, int index)
:
private void addNewGuess(){
ViewGroup guessContainer = (ViewGroup)findViewById(R.id.guessContainer);
View newGuess = getLayoutInflater().inflate(R.layout.guess_new, null);
guessContainer.addView(newGuess, 0);
}
index int:添加子项的位置
答案 1 :(得分:1)
我不确定这是否是处理此类行为的最佳方式。
我建议将LinearLayout
替换为ListView
或RecyclerView
(哪一个最适合您)并向适配器添加新项目。
这样您就可以控制添加新项目的位置。
此外,将所有数据放在列表中可以让您更好地控制它(从我的角度来看)。