哪个listview更好?

时间:2015-07-13 11:00:19

标签: android listview layout

我使用scrollview+linearlayout创建了一个列表。我在customviews内创建了linear layout,这是我的代码:

list.xml:

 <ScrollView
        android:layout_height="wrap_content"
        android:layout_width="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:id="@+id/scroll_container"
            android:orientation="vertical">
        </LinearLayout>

    </ScrollView>

在我的活动中:

int length = array.length();
for (int i = 0; i < length; i++) {
                JSONObject objLoop = array.getJSONObject(i);
                String driverid = objLoop.getString("driverid");
                String name = objLoop.getString("name");
                String dlnum = objLoop.getString("dlnum");
                String contact = objLoop.getString("contact");
                //INITIALIZE TABLE LAYOUT
                TableLayout tableLayout = new TableLayout(getBaseContext());
                TableLayout.LayoutParams tableparams = new TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                //row layout params
                TableRow.LayoutParams paramsRow = new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                paramsRow.setMargins(5, 5, 5, 5);
                tableparams.setMargins(10, 10, 10, 10);
                tableLayout.setLayoutParams(tableparams);
                //first row
                TableRow row1 = new TableRow(getBaseContext());
                row1.setPadding(5, 5, 5, 5);
                row1.setLayoutParams(paramsRow);
                row1.setBackgroundResource(R.drawable.edit_border);
                TextView textDriverName, firstIndex;
                textDriverName = new TextView(getBaseContext());
                firstIndex = new TextView(getActivity());
                ViewGroup.LayoutParams paramsTextView = new TableRow.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1f);
                textDriverName.setLayoutParams(paramsTextView);
                firstIndex.setLayoutParams(paramsTextView);
                textDriverName.setText(name);
                firstIndex.setText("Driver Name");
                row1.addView(firstIndex);
                row1.addView(textDriverName);

                tableLayout.addView(row1);

                scrollcontainer.addView(tableLayout);
            }

这段代码完美无缺。它正在创建listview之类的列表。 另一种方法是:

list.xml:

<Listview
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/myid" />

活动:

ListView list = (ListView) findViewById(R.id.mylist);
list.setAdapter(myadapter);

我的问题是:

哪一个更好?

第一种方法或第二种方法

我无法决定应该使用哪一个。请原谅我的弱语法。

提前致谢

4 个答案:

答案 0 :(得分:1)

Scrollview非常适合需要滚动的屏幕,但滚动视图用于渲染较大的数据集时效率不高。相反,您可以使用专门的适配器视图,如ListView,GridView和Recycler View(在Android Lollipop中引入)作为长列表。

ListView是一个Android ViewGroup,广泛用于显示垂直可滚动行中的数据集合。列表项会自动插入到列表中,使用适配器和适配器从数据源源(如数组,光标等)中提取数据。

查看以下示例,这可能有所帮助。

Android ListView Example

Android RecyclerView Example

答案 1 :(得分:1)

简单回答,使用列表视图进行线性布局。

如果您拥有大量数据,它们的效果最佳。

答案 2 :(得分:1)

ListView可以扩展以处理大量的列表项(通常是类似的项目)。这意味着如果你有少量的项目,ScrollView和ListView没有太大差别。但是,当您的应用使用 ViewHolder 模式处理大量数据时,ListView是性能的更好选择。 请详细了解scrollview vs listview herehere

答案 3 :(得分:1)

根据我的观点,使用Native小部件比你的方法更好。我有理由这样做。 理由:

在你的方法中:

  • 当您创建自己的视图时,每次必须使用不同的数据创建相同的视图时
  • 索引管理是由你自己维护的,这与本机很难比较,因为在本机自动索引维护中。
  • 同样在您的方法中,您无法重复使用您的观点
  • 因索引管理而难以添加和删除

另一方面,本机小部件的好处:

  • 您只需提供数据和视图。它由android
  • 自动管理
  • 无需处理索引
  • 查看重用
  • 删除和添加易于比较您的方法
  • 由于视图可重用性,在大数据显示时不需要太多内存。

所以我们可以说Native Native更好。 :)