【发布时间】:2014-12-16 00:42:25
【问题描述】:
当用户输入一个单词时,它会创建Buttons - 每个单词的字母一个Button:
插图:
如果用户输入“so”,它会创建 2 个Buttons - 's', 'o'
如果用户输入“make”,它会创建 4 个Buttons - 'm', 'a', 'k', 'e'
我很难决定应该如何设计它。最终我决定做以下事情:每个单词都被添加到一个垂直的LinearLayout。并且对于每个单词,每个字母都添加到水平的LinearLayout。所以这是LinearLayout 中的LinearLayout 方法。
这是我创建的有效代码:
//creates words dynamically
public void makeNewWord(LinearLayout ll, View v, EditText e){
//the horizontal linear layout
LinearLayout linearLayout2 = new LinearLayout(v.getContext());
linearLayout2.setOrientation(LinearLayout.HORIZONTAL);
//the parameters for the horizontal linear layout
LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
//e is the user input
int size = e.getText().toString().length();
for (int i=0; i<size; i++){
final Button dynamicButtons = new Button(v.getContext());
dynamicButtons.setLayoutParams(rlp);
//add the buttons to the horizontal linear layout
linearLayout2.addView(dynamicButtons, rlp);
}
// ll is the vertical linear layout which I created in xml
// so for each entered word, I am adding horizontal linear layouts to my vertical layout
ll.addView(linearLayout2, 0);
}
但现在我意识到使用ListView 可能更有效,尤其是因为我想让单词列表可扩展和可折叠。但是是否可以使用ListView 创建上面的插图?我该怎么做呢?
我尝试如下创建ArrayAdapter:ArrayAdapter<LinearLayout> adapter = new ArrayAdapter<LinearLayout>(this, R.id.listview)。所以基本上它将是水平LinearLayouts 的ListView。或者我应该改用Buttons 的ArrayAdapter 吗?正确的做法是什么?
【问题讨论】:
-
我认为简单的答案是否定的。您不能使用列表视图来做到这一点,因为一旦您编写了自定义适配器,您就需要有一个列表项视图才能将其作为参数。该列表项视图是静态的 - 通常使用 XML 文件完成。我认为仅实现一种使用您所拥有的手动滚动屏幕的方法会容易得多 - 这真的一点也不难!
-
滚动很容易。但我希望我的单词列表也可以折叠和扩展。我听说可以创建一个可扩展的 ListView。 -- 我编辑了上面的帖子,不包括关于滚动的评论。我留下了关于扩展和折叠的部分,因为这是最重要的部分
标签: android listview android-linearlayout android-arrayadapter