2012-10-04 105 views
2

目標定製適配器視圖

我想在滾動視圖有一個列表(不是一個ListView)

問題

的ListView滾動型不起作用

可能的解決方法

我認爲解決的辦法是待辦事項如下:

  1. 創建擴展適配器視圖
  2. 設置類中的XML佈局
  3. 裝滿一個適配器適配器視圖類。

問題與解決

如果我把擴展適配器視圖在我的XML佈局應用程序崩潰。

錯誤:10-04 16:02:14.396:W/ActivityManager(2119):用於ActivityRecord活動暫停超時{422c1838包/ .activities.SelectWorkplaceActivity}

問題

發生了什麼事這裏錯了嗎?

有沒有更好的方法來使用適配器創建不可滾動的列表?

代碼

的觀點:

public class BasicListView extends AdapterView<ListAdapter> { 

private String tag = "BasicListView"; 

private ListAdapter mAdapter; 

private DataSetObserver mDataSetObserver; 

private Context mContext; 

public BasicListView(Context context) { 
    super(context); 
    mContext = context; 

} 

public BasicListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    mContext = context; 
} 

public BasicListView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    mContext = context; 
} 

@Override 
public ListAdapter getAdapter() { 
    return mAdapter; 
} 
@Override 
public View getSelectedView() { 
    Log.i(tag, "getSelectedView not available"); 
    return null; 
} 
@Override 
public void setAdapter(ListAdapter adapter) { 
    if(mAdapter != null) 
    { 
     mAdapter.unregisterDataSetObserver(mDataSetObserver); 
    } 

    mAdapter = adapter; 

    requestLayout(); 
} 

@Override 
public void setSelection(int position) { 
    Log.i(tag, "setSelection not available"); 
} 
} 

和XML佈局:

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

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="2" 
    > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/TextView02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Code scannen" /> 

     <Button 
      android:id="@+id/btn_scan_code" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      android:text="Scan werkplek" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Code handmatig invoeren" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 


      <EditText 
       android:id="@+id/et_type_code" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" > 
      </EditText> 

      <Button 
       android:id="@+id/btn_send_code" 
       style="?android:attr/buttonStyleSmall" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Verzenden" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/TextView01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/label_current_sessions" 
      /> 

     <package.views.BasicListView 
      android:id="@+id/current_sessions" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 
     </package.views.BasicListView> 

     <TextView 
      android:id="@+id/TextView02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dip" 
      android:text="@string/label_favorite_workplaces" 
      /> 

     <ListView 
      android:id="@+id/favorite_workplaces" 
      android:layout_width="match_parent" 
      android:layout_height="193dp" 
      /> 

    </LinearLayout> 
</ScrollView> 


<include 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/actionbar" /> 

如果您想了解更多信息,請只問:)

+4

解決方案:不要在scrollview中放置一個listview。你不應該這樣做,它不應該工作 – njzk2

+0

總是有一個錯誤。發佈你的logcat輸出。 – njzk2

+0

「我想在scrollView中有一個列表」不是一個目標。這是解決您的目標的技術觀點。這可能是頂部滾動給列表視圖更多的空間。你可以在列表視圖中使用headerview – njzk2

回答

3

Romain Guy的這個答案解釋了爲什麼你應該使用LinearLayout而不是ListView來達到這個目的:https://stackoverflow.com/a/3496042/1717225

+0

謝謝你的回答,但在這個例子中只有listview滾動,而不是Container視圖本身。你明白嗎? – Extranion

+0

對不起,我誤解了。檢查我的新答案。 – drewhannay