Android Tools attributes: listItem & sample data rocks!
Do you know layout tools attributes ? You know the one we import sometimes without really don’t know what for.
xmlns:tools="http://schemas.android.com/tools"
I use to only use the tools:text
one with a plain text in it. While I am a little more brave, I would but the label in a string.xml
file, but that’s all.
I have discovered much more watching the Def Fest Nantes 2017 cast, thanks to Nicolas Roard conf speaking about ConstraintLayout. (When I think that it was 200 meters from my work, and I had to watch it on Youtube :’( — life is a b…. haha
Show me the real life !
So 2 things stoke me:
1 — the simple use of tools:listitem
that allows you to replace the randoms lines of a “List Item” or a “Recycler View” line in the Android Studio layout editor.
By just adding this line on my Recycler View in my layout like this:
tools:listitem="@layout/item_subject_row"
My layout shows not random line anymore, but the real item I have built for the actual application, directly shows inside the editor.
Isn’t that as cool as easy ? but much more to come
2 — Nicolas Roard spoke about Sample Data as well.
Since Android Studio 3.0, you can use predefine data offered by Android Studio or create a specific folder of “Sample data” where you will put fake data to be displayed directly in your layout, right directly in the layout editor.
Predefine data
Android studio 3.0 brought a number of predefine data through the tools attributes, to visualized easily your layout structure.
inside a tools:text
attribute, just use @tools/data/
options, eg:
tools:text="@tools:sample/last_names"
Android studio is offering you a list that includes:
last_names, first_names, full_names, cities, avatars, backgrounds/scnenic, date/ddmmyy, date/day_of_week, date/ddmm, date/hhmmss, date/mmddyy, lorem, lorem/ramdom, us_phones, us_zipcodes
At last found the documentation page for the tools attributes!!
My own sample data
To create your fake/sample data folder, just right click on the “app” folder then “new > Sample Data directory”
It will create a “sampledata” folder where you can put your data, inside simple files.
Inside your folder, add plain text file where you put raw data, one by line (can be colors such as #ff33aa or just text). Then in your layout you access in your tools:text
attributes by referencing @sample/nameOfTheFileGiven
tools:text="@sample/my-subjects"
But even better! you can use Json object to show more complex data
In my “sampledata” folder, I have created a file called subects.json where I have put these data in it.
{
"data" :[
{"idweb": -1, "sourceId" : 1, "name" : "AIRCRAFT ACCIDENT ..."},
{"idweb": 1, "sourceId" : 1, "name" : "ANNEX 1 ..."},
{"idweb": 2, "sourceId" : 1, "name" : "ANNEX 11 ..."},
{"idweb": 3, "sourceId" : 1, "name" : "ANNEX 12 ..."}
]
}
The tricky thing that stuck me for a moment, it that you cannot start your Json file by a table. It must be a Json object at the root. And must compile your project to see your new/updated data
Then you access your data such as this:
tools:text="@sample/subjects.json/data/name"
Android studio is really helpful and usually, shows you directly all the options it knows from your files as soon as your type @sample/
(don’t forget to make the project first).
I pronounce you husband and wife
If you combine tools:text
and sample data
(together with tools:listitem
in my case) you can show without launching your app how your screen as it would be.
So my screen is now became:
What a time saver to build and “debug” your screen