Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
uv-amse-android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Lucas NAURY
uv-amse-android
Commits
a8f9bef9
Commit
a8f9bef9
authored
Feb 21, 2024
by
Lucas NAURY
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add images in DB
parent
0d481251
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
80 additions
and
32 deletions
+80
-32
misc.xml
.idea/misc.xml
+0
-1
DBHelper.java
app/src/main/java/com/example/tpleboncoin/db/DBHelper.java
+3
-5
DBManager.java
app/src/main/java/com/example/tpleboncoin/db/DBManager.java
+28
-11
Annonce.java
...src/main/java/com/example/tpleboncoin/models/Annonce.java
+12
-5
AjoutAnnonceFragment.java
...le/tpleboncoin/ui/ajout_annonce/AjoutAnnonceFragment.java
+12
-3
HomeAdapter.java
...ain/java/com/example/tpleboncoin/ui/home/HomeAdapter.java
+13
-0
HomeFragment.java
...in/java/com/example/tpleboncoin/ui/home/HomeFragment.java
+1
-1
mat1.jpg
app/src/main/res/drawable/mat1.jpg
+0
-0
mat2.jpg
app/src/main/res/drawable/mat2.jpg
+0
-0
mat3.jpg
app/src/main/res/drawable/mat3.jpg
+0
-0
mat4.jpg
app/src/main/res/drawable/mat4.jpg
+0
-0
mat5.jpg
app/src/main/res/drawable/mat5.jpg
+0
-0
mat6.jpg
app/src/main/res/drawable/mat6.jpg
+0
-0
annonces_grid.xml
app/src/main/res/layout/annonces_grid.xml
+3
-2
annonces_liste.xml
app/src/main/res/layout/annonces_liste.xml
+8
-4
No files found.
.idea/misc.xml
View file @
a8f9bef9
<?xml version="1.0" encoding="UTF-8"?>
<project
version=
"4"
>
<project
version=
"4"
>
<component
name=
"ExternalStorageConfigurationManager"
enabled=
"true"
/>
<component
name=
"ExternalStorageConfigurationManager"
enabled=
"true"
/>
<component
name=
"ProjectRootManager"
version=
"2"
languageLevel=
"JDK_17"
default=
"true"
project-jdk-name=
"jbr-17"
project-jdk-type=
"JavaSDK"
>
<component
name=
"ProjectRootManager"
version=
"2"
languageLevel=
"JDK_17"
default=
"true"
project-jdk-name=
"jbr-17"
project-jdk-type=
"JavaSDK"
>
...
...
app/src/main/java/com/example/tpleboncoin/db/DBHelper.java
View file @
a8f9bef9
...
@@ -26,11 +26,11 @@ public class DBHelper extends SQLiteOpenHelper {
...
@@ -26,11 +26,11 @@ public class DBHelper extends SQLiteOpenHelper {
static
final
String
DB_NAME
=
"LEBONCOIN.DB"
;
static
final
String
DB_NAME
=
"LEBONCOIN.DB"
;
// database version
// database version
static
final
int
DB_VERSION
=
2
;
static
final
int
DB_VERSION
=
3
;
// Creating table query
// Creating table query
private
static
final
String
CREATE_TABLE
=
"create table "
+
TABLE_NAME
+
"("
+
_ID
private
static
final
String
CREATE_TABLE
=
"create table "
+
TABLE_NAME
+
"("
+
_ID
+
" INTEGER PRIMARY KEY AUTOINCREMENT, "
+
TITLE
+
" TEXT NOT NULL, "
+
ADDRESS
+
" TEXT, "
+
IMAGE
+
"
TEXT
, "
+
PRICE
+
" DOUBLE, "
+
DESCRIPTION
+
" TEXT);"
;
+
" INTEGER PRIMARY KEY AUTOINCREMENT, "
+
TITLE
+
" TEXT NOT NULL, "
+
ADDRESS
+
" TEXT, "
+
IMAGE
+
"
BLOB
, "
+
PRICE
+
" DOUBLE, "
+
DESCRIPTION
+
" TEXT);"
;
public
DBHelper
(
Context
context
)
{
public
DBHelper
(
Context
context
)
{
super
(
context
,
super
(
context
,
...
@@ -64,12 +64,10 @@ public class DBHelper extends SQLiteOpenHelper {
...
@@ -64,12 +64,10 @@ public class DBHelper extends SQLiteOpenHelper {
String
title
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
TITLE
));
String
title
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
TITLE
));
String
address
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
ADDRESS
));
String
address
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
ADDRESS
));
String
image
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
IMAGE
));
byte
[]
image
=
data
.
getBlob
(
data
.
getColumnIndexOrThrow
(
IMAGE
));
double
price
=
data
.
getDouble
(
data
.
getColumnIndexOrThrow
(
PRICE
));
double
price
=
data
.
getDouble
(
data
.
getColumnIndexOrThrow
(
PRICE
));
String
description
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
DESCRIPTION
));
String
description
=
data
.
getString
(
data
.
getColumnIndexOrThrow
(
DESCRIPTION
));
data
.
close
();
return
new
Annonce
(
title
,
address
,
image
,
price
,
description
);
return
new
Annonce
(
title
,
address
,
image
,
price
,
description
);
}
}
}
}
app/src/main/java/com/example/tpleboncoin/db/DBManager.java
View file @
a8f9bef9
This diff is collapsed.
Click to expand it.
app/src/main/java/com/example/tpleboncoin/models/Annonce.java
View file @
a8f9bef9
...
@@ -11,11 +11,11 @@ public class Annonce implements Parcelable {
...
@@ -11,11 +11,11 @@ public class Annonce implements Parcelable {
private
String
titre
;
private
String
titre
;
private
String
adresse
;
private
String
adresse
;
private
double
prix
;
private
double
prix
;
private
String
image
;
private
byte
[]
image
;
private
String
description
;
private
String
description
;
// Constructeur
// Constructeur
public
Annonce
(
String
titre
,
String
adresse
,
String
image
,
double
prix
,
String
description
)
{
public
Annonce
(
String
titre
,
String
adresse
,
byte
[]
image
,
double
prix
,
String
description
)
{
this
.
titre
=
titre
;
this
.
titre
=
titre
;
this
.
adresse
=
adresse
;
this
.
adresse
=
adresse
;
this
.
image
=
image
;
this
.
image
=
image
;
...
@@ -37,7 +37,7 @@ public class Annonce implements Parcelable {
...
@@ -37,7 +37,7 @@ public class Annonce implements Parcelable {
public
double
getPrix
(){
return
prix
;}
public
double
getPrix
(){
return
prix
;}
public
String
getAdresse
(){
return
adresse
;}
public
String
getAdresse
(){
return
adresse
;}
public
String
getImage
(){
return
image
;}
public
byte
[]
getImage
(){
return
image
;}
public
String
getDescription
(){
return
description
;}
public
String
getDescription
(){
return
description
;}
...
@@ -53,7 +53,10 @@ public class Annonce implements Parcelable {
...
@@ -53,7 +53,10 @@ public class Annonce implements Parcelable {
parcel
.
writeString
(
adresse
);
parcel
.
writeString
(
adresse
);
parcel
.
writeDouble
(
prix
);
parcel
.
writeDouble
(
prix
);
parcel
.
writeString
(
image
);
parcel
.
writeInt
(
image
.
length
);
parcel
.
writeByteArray
(
image
);
parcel
.
writeString
(
description
);
parcel
.
writeString
(
description
);
parcel
.
writeInt
(
id
);
parcel
.
writeInt
(
id
);
}
}
...
@@ -70,8 +73,12 @@ public class Annonce implements Parcelable {
...
@@ -70,8 +73,12 @@ public class Annonce implements Parcelable {
private
Annonce
(
Parcel
in
)
{
private
Annonce
(
Parcel
in
)
{
titre
=
in
.
readString
();
titre
=
in
.
readString
();
adresse
=
in
.
readString
();
adresse
=
in
.
readString
();
prix
=
in
.
readDouble
();
prix
=
in
.
readDouble
();
image
=
in
.
readString
();
image
=
new
byte
[
in
.
readInt
()];
in
.
readByteArray
(
image
);
description
=
in
.
readString
();
description
=
in
.
readString
();
id
=
in
.
readInt
();
id
=
in
.
readInt
();
}
}
...
...
app/src/main/java/com/example/tpleboncoin/ui/ajout_annonce/AjoutAnnonceFragment.java
View file @
a8f9bef9
...
@@ -3,6 +3,7 @@ package com.example.tpleboncoin.ui.ajout_annonce;
...
@@ -3,6 +3,7 @@ package com.example.tpleboncoin.ui.ajout_annonce;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.graphics.Bitmap
;
import
android.graphics.drawable.BitmapDrawable
;
import
android.net.Uri
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.provider.MediaStore
;
import
android.provider.MediaStore
;
...
@@ -30,6 +31,8 @@ import com.example.tpleboncoin.db.DBManager;
...
@@ -30,6 +31,8 @@ import com.example.tpleboncoin.db.DBManager;
import
com.example.tpleboncoin.models.Annonce
;
import
com.example.tpleboncoin.models.Annonce
;
import
com.google.android.material.snackbar.Snackbar
;
import
com.google.android.material.snackbar.Snackbar
;
import
java.io.ByteArrayOutputStream
;
public
class
AjoutAnnonceFragment
extends
Fragment
{
public
class
AjoutAnnonceFragment
extends
Fragment
{
private
FragmentAjoutAnnonceBinding
binding
;
private
FragmentAjoutAnnonceBinding
binding
;
...
@@ -50,11 +53,12 @@ public class AjoutAnnonceFragment extends Fragment {
...
@@ -50,11 +53,12 @@ public class AjoutAnnonceFragment extends Fragment {
final
EditText
adresseAnnonce
=
binding
.
adresseAnnonce
;
final
EditText
adresseAnnonce
=
binding
.
adresseAnnonce
;
final
EditText
prixAnnonce
=
binding
.
prixAnnonce
;
final
EditText
prixAnnonce
=
binding
.
prixAnnonce
;
final
EditText
descriptionAnnonce
=
binding
.
descriptionAnnonce
;
final
EditText
descriptionAnnonce
=
binding
.
descriptionAnnonce
;
final
ImageView
imageAnnonce
=
binding
.
imageAnnonce
;
final
Button
boutonCreation
=
binding
.
boutonAjoutAnnonce
;
final
Button
boutonCreation
=
binding
.
boutonAjoutAnnonce
;
// Initialisation de la DB
// Initialisation de la DB
DBManager
dbManager
=
DBManager
.
getDBManager
(
this
.
getContext
());
DBManager
dbManager
=
DBManager
.
getDBManager
(
this
.
getContext
());
dbManager
.
open
();
dbManager
.
open
(
this
.
getContext
()
);
boutonCreation
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
boutonCreation
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
...
@@ -68,8 +72,14 @@ public class AjoutAnnonceFragment extends Fragment {
...
@@ -68,8 +72,14 @@ public class AjoutAnnonceFragment extends Fragment {
return
;
return
;
}
}
// On convertit l'image en byte array
Bitmap
bitmap
=
((
BitmapDrawable
)
imageAnnonce
.
getDrawable
()).
getBitmap
();
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
bitmap
.
compress
(
Bitmap
.
CompressFormat
.
JPEG
,
100
,
baos
);
byte
[]
imageInByte
=
baos
.
toByteArray
();
// On créé l'objet de la nouvelle annonce
// On créé l'objet de la nouvelle annonce
Annonce
nouvelleAnnonce
=
new
Annonce
(
titreAnnonce
.
getText
().
toString
(),
adresseAnnonce
.
getText
().
toString
(),
""
,
Double
.
parseDouble
(
prixAnnonce
.
getText
().
toString
()),
descriptionAnnonce
.
getText
().
toString
());
Annonce
nouvelleAnnonce
=
new
Annonce
(
titreAnnonce
.
getText
().
toString
(),
adresseAnnonce
.
getText
().
toString
(),
imageInByte
,
Double
.
parseDouble
(
prixAnnonce
.
getText
().
toString
()),
descriptionAnnonce
.
getText
().
toString
());
//On ajoute la nouvelle annonce à la DB
//On ajoute la nouvelle annonce à la DB
dbManager
.
insert
(
nouvelleAnnonce
);
dbManager
.
insert
(
nouvelleAnnonce
);
...
@@ -83,7 +93,6 @@ public class AjoutAnnonceFragment extends Fragment {
...
@@ -83,7 +93,6 @@ public class AjoutAnnonceFragment extends Fragment {
final
Button
boutonAppareilPhoto
=
binding
.
photoBtn
;
final
Button
boutonAppareilPhoto
=
binding
.
photoBtn
;
final
Button
boutonGalerie
=
binding
.
galerieBtn
;
final
Button
boutonGalerie
=
binding
.
galerieBtn
;
final
ImageView
imageAnnonce
=
binding
.
imageAnnonce
;
boutonGalerie
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
boutonGalerie
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
@Override
...
...
app/src/main/java/com/example/tpleboncoin/ui/home/HomeAdapter.java
View file @
a8f9bef9
...
@@ -4,10 +4,13 @@ package com.example.tpleboncoin.ui.home;
...
@@ -4,10 +4,13 @@ package com.example.tpleboncoin.ui.home;
import
android.app.Activity
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewGroup
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
android.widget.TextView
;
import
androidx.activity.result.contract.ActivityResultContracts
;
import
androidx.activity.result.contract.ActivityResultContracts
;
...
@@ -17,6 +20,8 @@ import com.example.tpleboncoin.R;
...
@@ -17,6 +20,8 @@ import com.example.tpleboncoin.R;
import
com.example.tpleboncoin.models.Annonce
;
import
com.example.tpleboncoin.models.Annonce
;
import
com.example.tpleboncoin.ui.DetailScreen
;
import
com.example.tpleboncoin.ui.DetailScreen
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -31,6 +36,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
...
@@ -31,6 +36,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
*/
*/
public
static
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
public
static
class
ViewHolder
extends
RecyclerView
.
ViewHolder
{
private
final
TextView
titreTextView
;
private
final
TextView
titreTextView
;
private
final
ImageView
imageView
;
private
final
TextView
adresseTextView
;
private
final
TextView
adresseTextView
;
private
final
TextView
prixTextView
;
private
final
TextView
prixTextView
;
...
@@ -51,6 +57,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
...
@@ -51,6 +57,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
titreTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
titre_annonce
);
titreTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
titre_annonce
);
adresseTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
adresse_annonce
);
adresseTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
adresse_annonce
);
prixTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
prix_annonce
);
prixTextView
=
(
TextView
)
v
.
findViewById
(
R
.
id
.
prix_annonce
);
imageView
=
(
ImageView
)
v
.
findViewById
(
R
.
id
.
image_annonce
);
}
}
public
TextView
getTitreTextView
()
{
public
TextView
getTitreTextView
()
{
...
@@ -62,6 +69,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
...
@@ -62,6 +69,7 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
public
TextView
getPrixTextView
()
{
public
TextView
getPrixTextView
()
{
return
prixTextView
;
return
prixTextView
;
}
}
public
ImageView
getImageView
()
{
return
imageView
;
}
}
}
/**
/**
...
@@ -97,11 +105,16 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
...
@@ -97,11 +105,16 @@ public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
public
void
onBindViewHolder
(
ViewHolder
viewHolder
,
final
int
position
)
{
public
void
onBindViewHolder
(
ViewHolder
viewHolder
,
final
int
position
)
{
Log
.
d
(
TAG
,
"Element "
+
position
+
" set."
);
Log
.
d
(
TAG
,
"Element "
+
position
+
" set."
);
//Byte array to img
InputStream
is
=
new
ByteArrayInputStream
(
mDataSet
.
get
(
position
).
getImage
());
Bitmap
bmpImage
=
BitmapFactory
.
decodeStream
(
is
);
// Get element from dataset at this position and replace the contents of the view
// Get element from dataset at this position and replace the contents of the view
// with that element
// with that element
viewHolder
.
getTitreTextView
().
setText
(
mDataSet
.
get
(
position
).
getTitre
());
viewHolder
.
getTitreTextView
().
setText
(
mDataSet
.
get
(
position
).
getTitre
());
viewHolder
.
getAdresseTextView
().
setText
(
mDataSet
.
get
(
position
).
getAdresse
());
viewHolder
.
getAdresseTextView
().
setText
(
mDataSet
.
get
(
position
).
getAdresse
());
viewHolder
.
getPrixTextView
().
setText
(
String
.
format
(
"%,.2f €"
,
mDataSet
.
get
(
position
).
getPrix
()));
viewHolder
.
getPrixTextView
().
setText
(
String
.
format
(
"%,.2f €"
,
mDataSet
.
get
(
position
).
getPrix
()));
viewHolder
.
getImageView
().
setImageBitmap
(
bmpImage
);
}
}
// Return the size of dataset (invoked by the layout manager)
// Return the size of dataset (invoked by the layout manager)
...
...
app/src/main/java/com/example/tpleboncoin/ui/home/HomeFragment.java
View file @
a8f9bef9
...
@@ -163,7 +163,7 @@ public class HomeFragment extends Fragment {
...
@@ -163,7 +163,7 @@ public class HomeFragment extends Fragment {
*/
*/
private
void
initDataset
()
{
private
void
initDataset
()
{
DBManager
dbManager
=
DBManager
.
getDBManager
(
this
.
getContext
());
DBManager
dbManager
=
DBManager
.
getDBManager
(
this
.
getContext
());
dbManager
.
open
();
dbManager
.
open
(
this
.
getContext
()
);
// On récupère toutes les annonces de la DB
// On récupère toutes les annonces de la DB
mDataset
=
reverseArrayList
(
dbManager
.
getAll
());
mDataset
=
reverseArrayList
(
dbManager
.
getAll
());
...
...
app/src/main/res/drawable/mat1.jpg
0 → 100644
View file @
a8f9bef9
52 KB
app/src/main/res/drawable/mat2.jpg
0 → 100644
View file @
a8f9bef9
187 KB
app/src/main/res/drawable/mat3.jpg
0 → 100644
View file @
a8f9bef9
92.6 KB
app/src/main/res/drawable/mat4.jpg
0 → 100644
View file @
a8f9bef9
292 KB
app/src/main/res/drawable/mat5.jpg
0 → 100644
View file @
a8f9bef9
170 KB
app/src/main/res/drawable/mat6.jpg
0 → 100644
View file @
a8f9bef9
39.9 KB
app/src/main/res/layout/annonces_grid.xml
View file @
a8f9bef9
...
@@ -25,16 +25,17 @@
...
@@ -25,16 +25,17 @@
android:text=
"Adresse, 59000 Douai"
/>
android:text=
"Adresse, 59000 Douai"
/>
<ImageView
<ImageView
android:id=
"@+id/image
View
"
android:id=
"@+id/image
_annonce
"
android:layout_width=
"100dp"
android:layout_width=
"100dp"
android:layout_height=
"100dp"
android:layout_height=
"100dp"
android:scaleType=
"centerCrop"
android:src=
"@drawable/ic_launcher_background"
/>
android:src=
"@drawable/ic_launcher_background"
/>
<TextView
<TextView
android:id=
"@+id/titre_annonce"
android:id=
"@+id/titre_annonce"
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_below=
"@+id/image
View
"
android:layout_below=
"@+id/image
_annonce
"
android:fontFamily=
"sans-serif-medium"
android:fontFamily=
"sans-serif-medium"
android:text=
"Titre annonce de test"
android:text=
"Titre annonce de test"
android:textAppearance=
"@style/TextAppearance.AppCompat.Medium"
/>
android:textAppearance=
"@style/TextAppearance.AppCompat.Medium"
/>
...
...
app/src/main/res/layout/annonces_liste.xml
View file @
a8f9bef9
...
@@ -23,10 +23,15 @@
...
@@ -23,10 +23,15 @@
android:paddingBottom=
"8dp"
>
android:paddingBottom=
"8dp"
>
<ImageView
<ImageView
android:id=
"@+id/image
View
"
android:id=
"@+id/image
_annonce
"
android:layout_width=
"70dp"
android:layout_width=
"70dp"
android:layout_height=
"80dp"
android:layout_height=
"70dp"
android:layout_marginTop=
"1dp"
android:layout_marginBottom=
"1dp"
android:foregroundGravity=
"fill_horizontal|fill_vertical"
android:scaleType=
"centerCrop"
android:src=
"@drawable/ic_launcher_background"
android:src=
"@drawable/ic_launcher_background"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
...
@@ -35,11 +40,10 @@
...
@@ -35,11 +40,10 @@
android:layout_width=
"wrap_content"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"8dp"
android:layout_marginStart=
"8dp"
android:layout_marginTop=
"4dp"
android:fontFamily=
"sans-serif-medium"
android:fontFamily=
"sans-serif-medium"
android:text=
"Titre annonce de test"
android:text=
"Titre annonce de test"
android:textAppearance=
"@style/TextAppearance.AppCompat.Medium"
android:textAppearance=
"@style/TextAppearance.AppCompat.Medium"
app:layout_constraintStart_toEndOf=
"@+id/image
View
"
app:layout_constraintStart_toEndOf=
"@+id/image
_annonce
"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
<TextView
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment