在android中以编程方式添加50个按钮是一个好习惯吗?

时间:2015-11-29 08:36:09

标签: android performance textview android-linearlayout

我只是测试一些东西。我想知道在线性布局中使用for循环添加50个或更多按钮是一个好习惯吗?在它上面使用OnClickListeners是一个好习惯吗?添加80多个按钮后代码滞后。我尝试使用Recyclerview技术只加载可见视图,但它仍然滞后,格式也会丢失。

的活动:

public class ButtonsTest extends Activity implements View.OnClickListener{
final ArrayList<Button> Buttons = new ArrayList<>();
//I want this text to be at least 800-1500 words.
String DemoText = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.buttonstext);
    FlowLayout fl = (FlowLayout) findViewById(R.id.layouttest);
    List<String> t = Arrays.asList(DemoText.split(" "));

    for (int x = 0; x < t.size(); x++) {
        Buttons.add(new Button(this));
        Buttons.get(x).setText(t.get(x));
        Buttons.get(x).setTextColor(Color.BLACK);
        Buttons.get(x).setBackgroundColor(Color.WHITE);
        Buttons.get(x).setId(x);
        Buttons.get(x).setOnClickListener(this);
        fl.addView(Buttons.get(x));
    }
}

@Override
public void onClick(View v) {
    Button t = (Button) v;
    t.setBackgroundColor(Color.YELLOW);
    t.setTextColor(Color.BLACK);
}
}

XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<ScrollView
    android:id="@+id/scrollView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <org.apmem.tools.layouts.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/layouttest"
        android:layout_width="fill_parent"
        android:layout_height="match_parent">

    </org.apmem.tools.layouts.FlowLayout>
</ScrollView>

3 个答案:

答案 0 :(得分:1)

让我成为一个说的人。如果您需要这么多按钮,特别是在滚动视图中,它们应该放在某种回收视图的容器中。理想情况下,RecyclerView指定数据,并创建该数据与视图之间的关系,然后以编程方式创建。

所以,但只是不在循环中并像那样添加它们

一些有用的链接

答案 1 :(得分:0)

我认为以编程方式添加它们是一种很好的做法,但我会考虑使用ListViewRecyclerView

答案 2 :(得分:0)

如果您尝试使用onclick侦听器在每个按钮上制作类似扫雷网格的内容,则在android中使用相对布局技术或网格布局使用java文件,并使用layoutParams属性调整按钮大小。 我这样做了,添加90-150按钮很顺利。 如果这有帮助,我可以给你实施。