2012-06-05 3 views
1

J'ai une table avec environ 20 colonnes et le nombre d'enregistrements qui varie de 5-20 +. Je veux afficher toutes ces données sur l'écran en utilisant des barres de défilement horizontales et verticales. Je suis déchiré sur quelle méthode serait le mieux pour le faire. J'ai commencé à utiliser une solution de listview, mais je me suis bloqué. Ce qui suit est le XML pour ma mise en page (ive condensé les lignes de la table, mais vous voyez l'idée) ..MonoDroid Affichage des champs de base de données avec la barre de défilement horizontale

<?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> 

Donc, fondamentalement, la ligne du tableau 1 est des données de cap statiques, mais chaque ligne après seront renseignés de manière dynamique à partir de la base de données , donc le nombre de lignes sera variable.

J'ai commencé à utiliser la solution de l'adaptateur de liste personnalisée, mais je n'arrive pas à la faire fonctionner. Voici mon 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]; 
     } 
    } 

puis enfin mon activité ...

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

la mise en page de CustomList a fondamentalement juste un LinearLayout suivi d'un listview et thats it. Merci de prendre le temps de regarder ce ...

+0

Bon le code ci-dessus fonctionne correctement, sauf sa recréer fondamentalement l'ensemble xml fichier que j'ai posté sur le dessus (répétant pour chaque ligne) plutôt que juste les lignes de données de la base de données. – k1komans

Répondre

0

Essayez avec ScrollView régler le défilement horizontal et vertical et à l'intérieur de votre mise en page principale

<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

merci de l'essayer – k1komans

Questions connexes