2015-07-13 113 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
  • 沒有必要設法處理指數
  • 查看重複使用
  • 刪除和添加容易比較你的方法
  • 沒有必要過多的內存時,視圖可重用性的大型數據顯示,因爲。

所以我們可以說本土方法更好。 :)