1

Actuellement, je reçois ce ci-dessous format XML de données à partir d'URL -siège Bus gestion de réservation

<Seat> 
<ColumnNo>0</ColumnNo> 
<Deck>2</Deck> 
<Height>2</Height> 
<IsAvailable>1</IsAvailable> 
<RowNo>0</RowNo> 
<SeatLabel>E</SeatLabel> 
<Width>1</Width> 
</Seat> 

<Seat> 
<ColumnNo>1</ColumnNo> 
<Deck>1</Deck> 
<Height>2</Height> 
<IsAvailable>1</IsAvailable> 
<RowNo>0</RowNo> 
<SeatLabel>SL5</SeatLabel> 
<Width>1</Width> 
</Seat> 

<Seat> 
<ColumnNo>2</ColumnNo> 
<Deck>1</Deck> 
<Height>1</Height> 
<IsAvailable>1</IsAvailable> 
<RowNo>0</RowNo> 
<SeatLabel/> 
<Width>1</Width> 
</Seat> 


<Seat> 
<ColumnNo>3</ColumnNo> 
<Deck>1</Deck> 
<Height>2</Height> 
<IsAvailable>1</IsAvailable> 
<RowNo>0</RowNo> 
<SeatLabel>SL1</SeatLabel> 
<Width>1</Width> 
</Seat> 

Et je l'ai fait l'image de la disposition du bus dans lequel je veux faire cliquer sur les sièges vacants et désactiver les sièges qui est disponible 0(<IsAvailable>0</IsAvailable>)

enter image description here

Je suis confus quant à ho w dois-je faire la mise en page ci-dessous et faire ensuite remplir avec les données XML que je reçois.

  • Comment faire la disposition des sièges.
  • Comment remplir le siège avec des données XML et que le clic sera transféré à l'activité suivante pour un traitement ultérieur.
  • activer désactiver le siège sur la base de sa disponibilité.

Je suis en mesure d'analyser les données/valeurs de XML dans mon code .... Je veux que la façon de rendre le format de mise en page et adapter ces valeurs XML à des sièges particuliers.

+0

Ceci est juste une suggestion.Gardez 2 images/drawables avec le siège à 2 états activé et désactivé. analyser le fichier XML et obtenir cette valeur IsAvailble et ajouter l'image/drawable par programmation à cette mise en page. – Raghavendra

+0

@Raghavendra hmm .... yaa mais la mise en page est assez complexe devrait utiliser image buttion, listview, recycleur ou autre chose ... pourriez-vous référer l'un des projet en ligne ou github, il sera plus facile à comprendre. –

+0

Essayez ceci http://saurabhtomarsdk.blogspot.in/2014/06/android-bus-ticket-booking-code-with.html et https://www.dropbox.com/s/0oauvnihh7m5hj1/BusSeatBooking.rar?dl = 0 – Raghavendra

Répondre

0

Utiliser la disposition de table pour la conception. Vous pouvez utiliser ce code pour la conception, reportez-vous ce link

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:shrinkColumns="*" 
     android:stretchColumns="*"> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:layout_span="4" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="Table 2" 
      android:textColor="#000000" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="A" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="B" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="C" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="D" 
      android:textColor="#000000" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="E" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="F" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="G" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="H" 
      android:textColor="#000000" /> 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow4" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="I" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="J" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="K" 
      android:textColor="#000000" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="1dp" 
      android:background="#FFFFFF" 
      android:gravity="center" 
      android:text="L" 
      android:textColor="#000000" /> 
    </TableRow> 
    </TableLayout> 
</LinearLayout> 
+0

salut .. merci je l'ai fait la nuit dernière vous m'a renvoyé pour la mise en page avec l'aide de ce que je suis en mesure de faire voir ce lien http://i.stack.imgur.com/VjMkl.png ... je veux la logique pour définir les valeurs que je récupère des données XML en ligne à chaque place. –

+0

si vous trouvez ma réponse utile pour vous ensuite apprécier avec upvote –

+0

yaa sûr que votre réponse est utile ma question mise en page + ajout de données aux mises en page du concept xml en ligne –

1

Voilà comment je l'ai fait, il est encore en phase bêta et je suis en train de l'améliorer. L'utilisateur peut assigner dynamiquement le nombre de lignes et de sièges dans une rangée (voir les données textuelles).

Pre Code Beta est disponible sur Github

enter image description hereenter image description here

enter image description here

activité Mise en bus avec des données de test

package com.serveroverload.busbooking; 

import com.example.busbooking.R; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.LinearLayout.LayoutParams; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

public class BusLayoutActivity extends Activity { 

    // Test Data Inputs 
    private final int NUMBER_OF_SEATS_LEFT_UPPER = 5; 
    private final int NUMBER_OF_SEATS_RIGHT_UPPER = 5; 
    private final int NUMBER_OF_ROWS_LEFT_UPPER = 1; 
    private final int NUMBER_OF_ROWS_RIGHT_UPPER = 2; 

    private final int NUMBER_OF_SEATS_LEFT_LOWER = 8; 
    private final int NUMBER_OF_SEATS_RIGHT_LOWER = 7; 
    private final int NUMBER_OF_ROWS_LEFT_LOWER = 1; 
    private final int NUMBER_OF_ROWS_RIGHT_LOWER = 3; 

    private Double totatCost = 0.0; 
    private int totalSeats = 0; 
    private TextView totalPrice; 
    private TextView totalBookedSeats; 

    private LayoutParams seatParams; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.dynamic_bus_layout); 

     // Fetch Required Layouts 
     RelativeLayout busLayoutUpper = (RelativeLayout) findViewById(R.id.upper_deck); 
     RelativeLayout busLayoutBottom = (RelativeLayout) findViewById(R.id.lower_deck); 
     totalPrice = (TextView) findViewById(R.id.total_cost); 
     totalBookedSeats = (TextView) findViewById(R.id.total_seats); 

     // Layout Param for Seats 
     seatParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); 
     seatParams.weight = 1; 
     seatParams.leftMargin = 5; 
     seatParams.rightMargin = 5; 

     // Add Bottom Seats 
     addLeftSeats(NUMBER_OF_ROWS_LEFT_UPPER, NUMBER_OF_SEATS_LEFT_UPPER, busLayoutBottom); 
     addRightSeats(NUMBER_OF_ROWS_RIGHT_UPPER, NUMBER_OF_SEATS_RIGHT_UPPER, busLayoutBottom); 

     // Add Upper Seats 
     addLeftSeats(NUMBER_OF_ROWS_LEFT_LOWER, NUMBER_OF_SEATS_LEFT_LOWER, busLayoutUpper); 
     addRightSeats(NUMBER_OF_ROWS_RIGHT_LOWER, NUMBER_OF_SEATS_RIGHT_LOWER, busLayoutUpper); 

    } 

    /* 
    * This function draw seats for right row 
    */ 
    private void addRightSeats(int numberOfRowsRight, float numberOfSeatsInRow, ViewGroup busLayout) { 
     int previousRow; 

     // ADD RIGHT ROWS 

     previousRow = 0; 

     // Begin adding rows 
     for (int rightRowCount = 0; rightRowCount < numberOfRowsRight; rightRowCount++) { 

      // Adding Linear layout as row 
      LinearLayout rightRow = new LinearLayout(getApplicationContext()); 
      rightRow.setGravity(Gravity.CENTER); 
      rightRow.setId(100 + rightRowCount); 

      // make seats equal distance 
      rightRow.setWeightSum(numberOfSeatsInRow); 

      // if it is first row add row to window (ALIGN_PARENT_BOTTOM) 
      // else add row above window row (ABOVE) 
      if (previousRow != rightRowCount) { 
       RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       newParams.addRule(RelativeLayout.ABOVE, 100 + previousRow); 
       newParams.setMargins(10, 10, 10, 10); 
       rightRow.setLayoutParams(newParams); 

      } else { 

       // Layout params for first row (Window seat), adding margin and 
       // bottom alignment 
       RelativeLayout.LayoutParams rightRowParam = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       rightRowParam.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
       rightRowParam.setMargins(10, 10, 10, 10); 
       rightRow.setLayoutParams(rightRowParam); 
      } 

      // Add Seats in row we have added 
      for (int rowCount = 0; rowCount <= numberOfSeatsInRow; rowCount++) { 

       // Left Upper 
       final Seat rightRowSeat = (Seat) LayoutInflater.from(this).inflate(R.layout.seat, null); 
       rightRowSeat.setLayoutParams(seatParams); 
       rightRowSeat.setSeatNumber("SL" + rowCount); 
       rightRowSeat.setGravity(Gravity.CENTER); 

       rightRowSeat.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         updateCost(rightRowSeat); 

         Toast.makeText(getApplicationContext(), "seat # " + rightRowSeat.getSeatNumber(), 300).show(); 

        } 
       }); 

       // add seat to row 
       rightRow.addView(rightRowSeat); 

      } 

      // and then add row to bus layout 
      busLayout.addView(rightRow); 

      // update row counter 
      previousRow = rightRowCount; 

     } 
    } 

    /* 
    * This function draw seats for left row 
    */ 
    private void addLeftSeats(int numberOfRowsLeft, float nuumberOfSeatsInRow, ViewGroup busLayout) { 
     // Adding Left side rows 

     int previousRow = 0; 

     for (int leftRowCount = 0; leftRowCount < numberOfRowsLeft; leftRowCount++) { 

      // Adding Linear layout as row 
      LinearLayout LeftRow = new LinearLayout(getApplicationContext()); 
      LeftRow.setGravity(Gravity.CENTER); 
      LeftRow.setId(leftRowCount); 

      // Equi distance seats 
      LeftRow.setWeightSum(nuumberOfSeatsInRow); 

      // if it is first row add row to window 
      // else add row below window row (BELOW) 
      if (previousRow != leftRowCount) { 
       RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       newParams.addRule(RelativeLayout.BELOW, previousRow); 
       newParams.setMargins(10, 10, 10, 10); 
       LeftRow.setLayoutParams(newParams); 

      } else { 
       RelativeLayout.LayoutParams leftRowParam = new RelativeLayout.LayoutParams(
         RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       leftRowParam.setMargins(10, 10, 10, 10); 
       LeftRow.setLayoutParams(leftRowParam); 
      } 

      // Add Seats in row 
      for (int rowCount = 0; rowCount <= nuumberOfSeatsInRow; rowCount++) { 

       // Left Upper 
       final Seat leftRowSeat = (Seat) LayoutInflater.from(this).inflate(R.layout.seat, null); 
       leftRowSeat.setLayoutParams(seatParams); 
       leftRowSeat.setSeatNumber("SL " + rowCount); 
       leftRowSeat.setGravity(Gravity.CENTER); 

       leftRowSeat.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         updateCost(leftRowSeat); 

         Toast.makeText(getApplicationContext(), "seat # " + leftRowSeat.getSeatNumber(), 300).show(); 
        } 
       }); 

       LeftRow.addView(leftRowSeat); 

      } 

      // add row to bus layout 
      busLayout.addView(LeftRow); 

      // update row counter 
      previousRow = leftRowCount; 

     } 
    } 

    private void updateCost(final Seat ud_LeftWindowSeat) { 

     if (ud_LeftWindowSeat.setSelected()) { 

      totatCost += ud_LeftWindowSeat.getSeatPrice(); 
      ++totalSeats; 

     } else { 
      totatCost -= ud_LeftWindowSeat.getSeatPrice(); 
      --totalSeats; 
     } 

     totalPrice.setText("" + totatCost); 
     totalBookedSeats.setText("" + totalSeats); 
    } 
} 

personnalisés TextView pour les sièges

package com.serveroverload.busbooking; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.TextView; 

public class Seat extends TextView { 

    public Seat(Context context) { 
     super(context); 

    } 

    public Seat(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public Seat(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    private String seatNumber; 
    private Boolean isSelected = false; 
    private Boolean isWomen = false; 
    private Double seatPrice = 100.00; 

    public Boolean getIsWomen() { 
     return isWomen; 
    } 

    public void setIsWomen(Boolean isWomen) { 
     this.isWomen = isWomen; 
    } 

    public Double getSeatPrice() { 
     return seatPrice; 
    } 

    public void setSeatPrice(Double seatPrice) { 
     this.seatPrice = seatPrice; 
    } 

    public Boolean getIsSelected() { 
     return isSelected; 
    } 

    public Boolean setSelected() { 

     this.isSelected = !this.isSelected; 

     if (getIsSelected()) { 
      setBackgroundColor(0xff99cc00); 

     } else { 
      setBackgroundColor(0xff33b5e5); 

     } 

     return isSelected; 

    } 

    public String getSeatNumber() { 
     return seatNumber; 
    } 

    public void setSeatNumber(String seatNumber) { 
     this.seatNumber = seatNumber; 

     setText(seatNumber); 
    } 

} 

mise en page d'activité

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FFF" 
     android:orientation="vertical" 
     android:weightSum="2" 
     tools:context="com.serveroverload.busbooking.MainActivity" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center_horizontal" 
      android:text="Lower Deck" 
      android:textColor="#F00" 
      android:textSize="20sp" /> 

     <RelativeLayout 
      android:id="@+id/upper_deck" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_margin="5dp" 
      android:layout_weight="1" 
      android:background="@drawable/bus_outline" 
      android:minHeight="150dp" > 
     </RelativeLayout> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:gravity="center_horizontal" 
      android:text="Upper Deck" 
      android:textColor="#F00" 
      android:textSize="20sp" /> 

     <RelativeLayout 
      android:id="@+id/lower_deck" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_margin="5dp" 
      android:layout_weight="1" 
      android:background="@drawable/bus_outline" 
      android:minHeight="150dp" > 
     </RelativeLayout> 

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

      <TextView 
       android:id="@+id/total_seats_label" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:text="Number Of Seats" 
       android:textSize="20sp" /> 

      <TextView 
       android:id="@+id/total_seats" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_gravity="center_horizontal" 
       android:gravity="center_horizontal" 
       android:textColor="#0F0" 
       android:textSize="20sp" /> 
     </RelativeLayout> 

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

      <TextView 
       android:id="@+id/total_cost_label" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:text="Total Cost" 
       android:textSize="20sp" /> 

      <TextView 
       android:id="@+id/total_cost" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:textColor="#0F0" 
       android:textSize="20sp" /> 
     </RelativeLayout> 
    </LinearLayout> 

</ScrollView> 

disposition des sièges simple pour la mise en page de gonflage seat.xml

<com.serveroverload.busbooking.Seat xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_margin="5dp" 
    android:background="@android:color/holo_blue_light" 
    android:gravity="center" 
    android:textColor="#000" 
    android:textSize="20sp" /> 

contour Bus forme drawable bus_outline.xml

<corners 
    android:bottomLeftRadius="0dp" 
    android:bottomRightRadius="0dp" 
    android:radius="2dp" 
    android:topRightRadius="0dp" /> 

<stroke 
    android:width="2dp" 
    android:color="@android:color/holo_orange_dark" />