2012-06-05 3 views
1

나는 약 20 개의 열과 5-20 +에서 달라질 레코드 수를 가진 테이블을 가지고 있습니다. 가로 및 세로 스크롤 막대를 사용하여이 데이터를 모두 화면에 표시하려고합니다. 나는 이것을하기 위해 어떤 방법이 최선인지에 관해서 찢겨져있다. 나는 listview 솔루션을 시작했지만 붙잡혀 버린 종류가있다. 다음은 내 레이아웃의 XML입니다 (테이블 행을 응축 필자하지만 당신은 아이디어를 얻을) ..MonoDroid 가로 스크롤 막대가있는 데이터베이스 필드 표시

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <Button 
     android:id="@+id/btnHome" 
     style="@style/homeButton" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:gravity="center" 
     android:text="@string/btnHomeText" 
     android:textColor="@color/white" 
     android:textStyle="bold" /> 
    <RelativeLayout 
     android:id="@+id/InnerRelativeLayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/btnHome"> 
     <LinearLayout 
      style="@style/stdWindow" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginBottom="5dp" 
      android:layout_marginLeft="5dp" 
      android:layout_marginRight="5dp" 
      android:baselineAligned="false" 
      android:orientation="vertical"> 
      <TextView 
       android:id="@+id/tvDriverReport" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:background="@color/VeryDarkGray" 
       android:text="@string/futureFeatureText" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:textColor="@color/OMSGold" /> 
      <TableLayout 
       android:minWidth="25px" 
       android:minHeight="25px" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/tableLayout1"> 
       <TableRow 
        android:id="@+id/tableRow1"> 
        <TextView 
         android:text="@string/summaryTicketNumber" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="0" 
         android:id="@+id/textView10" /> 
        <TextView 
         android:text="@string/summaryDate" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="1" 
         android:id="@+id/textView11" /> 
        <TextView 
         android:text="@string/summaryTruckNumber" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="2" 
         android:id="@+id/textView12" /> 
        <TextView 
         android:text="@string/summaryBeginOdometer" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="3" 
         android:id="@+id/textView21" /> 
        <TextView 
         android:text="@string/summaryEndOdometer" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="4" 
         android:id="@+id/textView22" /> 
       </TableRow> 
       <TableRow 
        android:id="@+id/tableRow2"> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="0" 
         android:id="@+id/tvTicketNumber" /> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="1" 
         android:id="@+id/tvSummaryDate" /> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="2" 
         android:id="@+id/tvTruckNumber" /> 
        <TextView 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:layout_column="3" 
         android:id="@+id/tvBeginOdometer" /> 
        <TextView 
         android:layout_column="4" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:id="@+id/tvEndOdometer" /> 
       </TableRow> 
      </TableLayout> 
     </LinearLayout> 
    </RelativeLayout> 
</LinearLayout> 

이 동적으로 데이터베이스에서 채워집니다 후에 그래서 기본적으로 테이블 행 1 정적 제목 데이터 만 모든 행이다 따라서 행의 수는 가변적입니다.

사용자 지정 목록 어댑터 솔루션에서 시작했지만 작동하지 않는 것 같습니다. 여기에 기본적으로 그냥있는 LinearLayout은 목록보기 다음 한 내 customlistadapter

public class CustomListAdapter : BaseAdapter 
    { 
     Activity context; 

     public List<TicketSummaryMapper> items; 

     public CustomListAdapter (Activity context) 
      : base() 
     { 
      this.context = context; 
      var db = new SQLiteConnection (db); 
      items = db.Query<TicketSummaryMapper> ("select * from mydatabase"); 

     } 

     public override int Count 
     { 
      get { return items.Count; } 
     } 

     public override Java.Lang.Object GetItem(int position) 
     { 
      return position; 
     } 

     public override long GetItemId(int position) 
     { 
      return position; 
     } 

     public override View GetView (int position, View convertView, ViewGroup parent) 
     { 

      var item = items [position];    


      var view = (convertView ?? 
       context.LayoutInflater.Inflate (
        Resource.Layout.ticket_summary, 
        parent, 
        false)) as LinearLayout; 

      //Find references to each subview in the list item's view 
      var textTicketNo = view.FindViewById (Resource.Id.tvTicketNumber) as TextView; 
      var textSummaryDate = view.FindViewById (Resource.Id.tvSummaryDate) as TextView; 
      var textTruckNumber = view.FindViewById (Resource.Id.tvTruckNumber) as TextView; 
      var textBeginOdometer = view.FindViewById (Resource.Id.tvBeginOdometer) as TextView; 



      //Assign this item's values to the various subviews 
      textTicketNo.SetText (item.TicketNumber, TextView.BufferType.Normal); 
      textSummaryDate.SetText (item.TransDate, TextView.BufferType.Normal); 
      textTruckNumber.SetText (item.EquipmentNo, TextView.BufferType.Normal); 
      textBeginOdometer.SetText (item.BeginOdometer, TextView.BufferType.Normal); 

      //Finally return the view 
      return view; 
     } 

     public TicketSummaryMapper GetItemAtPosition(int position) 
     { 
      return items[position]; 
     } 
    } 

하고 결국 내 활동 ...

[Activity (Label = "AdminActivity")]    
public class AdminActivity : Activity 
{ 
    CustomListAdapter listAdapter; 
    public AdminActivity() { } 
    public AdminActivity(IntPtr handle, JniHandleOwnership transfer) : base(handle,   transfer) { } 


    protected override void OnCreate (Bundle bundle) 
    { 
     base.OnCreate (bundle); 

     //Set the Activity's view to our list layout   
     SetContentView (Resource.Layout.customlist); 

     //Create our adapter 
     listAdapter = new CustomListAdapter (this); 

     //Find the listview reference 
     var listView = FindViewById<ListView> (Resource.Id.listView); 

     //Hook up our adapter to our ListView 
     listView.Adapter = listAdapter; 
    } 
    } 

customlist 레이아웃이며 이잖아. 이보고 시간을내어 주셔서 감사합니다 ...

+0

좋아있는 ScrollView가 수평 및 수직 스크롤 설정으로하고 메인 레이아웃 내부에 시도 파일 (모든 행에 대해 반복)이 아니라 데이터베이스의 데이터 행에 맨 위에 게시되었습니다. – k1komans

답변

0

위의 코드는 기본적으로 다시 전체 XML을 제외하고는 제대로 작동

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scrollbars="horizontal|vertical"> 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

    ..... 

</ScrollView> 
+0

감사합니다. – k1komans

관련 문제