2015-07-13 75 views
-1

我使用scrollview+linearlayout创建了一个列表。我创建customviewslinear layout,这里是我的代码:哪个listview更好?

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); 
      } 

那么这段代码可以正常使用。它创建像列表一样的列表视图。 另一种方法是:

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); 

我的问题是:

哪一个更好?

第一种方法或第二种方法

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

预先感谢

+1

使用listview和设置listview标题这是你的线性布局 –

+0

你有多少行数据? –

+0

1到100之间。它取决于 –

回答

1

ListView可以缩放来处理大量的列表项(通常是类似的项)。这意味着如果您的项目数量很少,ScrollView和ListView并没有太大的不同。但是,当您的应用使用大量数据时,通过使用ViewHolder模式,ListView是性能更好的选择。 请阅读更多关于scrollview vs listview herehere

+0

是的,最好的和简单的方法 –

1

滚动型是理想的,其中需要滚动屏幕,但它是当滚动视图用于呈现一个较大的数据集不是有效的。相反,您可以使用特殊的适配器视图,如ListView,GridView和Recycler View(Android Lollipop中引入)来查看长列表。

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

签出以下示例,这可能有所帮助。

Android ListView Example

Android RecyclerView Example

+0

好的。我知道关于listview和scrollview。我在问,哪种方法更好。 –

+0

总是ListView或RecyclerView是有效的,然后ScrollView。它适用于滑动手势,内存管理和性能将比ScrollView更好。 –

1

答案很简单,对于线性布局使用列表视图。

如果您的数据量较大,它们的工作效果最佳。

1

根据我的观点,使用Native小部件是bettor然后你的方法。我有这个理由。 原因:

在你的方法:

  • 当你创建你自己的观点,然后每次你必须创建具有不同数据
  • 指数管理是你的自我维持同样的看法时,这是很难比较的,以本地,因为在本地自动索引维护。
  • 另外,在你的方法,你就无法再使用视图
  • 添加和删除很难,因为指数管理

在另一方面本机部件福利:

  • 您只需提供数据和观点。它会自动由Android
  • 没有必要设法处理指数
  • 查看重复使用
  • 删除和添加容易比较你的方法
  • 没有必要过多的内存时,视图可重用性的大型数据显示,因为。

所以我们可以说本土方法更好。 :)