I want to develop an e buy application. I have categories and sub-products and data is kept in external server. If I add a new category on the server I want to add category and product activity automatically. Is it possible? How can I create a new activity automatically and how can I add the activity automatically in the android manifest?
No, you cannot do this. Activity objects must be declared at compile-time and cannot be changed later. You must adapt your code to work in the different situations.
For example, let's say you are fetching a name, birthdate, and description for a human resources entry. You would create one Activity that contained your layout and text fields, then have that Activity fetch the name, birthdate, and description from your server. It would then populate the text fields with the data, or show/hide the fields if there is no data for them.
This is a design issue, the activity should not be binded with your data. You should design an activity for categories data and an activity for products data. If they have different look, just build different sub class of your root activities.
Related
Now I am working on Android application which has one main Activity that is displaying some data via GLSurface. This data can be changed in many ways. For this I have several fragments with some lists of variants with extra logic. Problem is that I need somehow transfer data from one place to another.
For example:
I have fragment with list of elements. I used RecyclerView with custom adapter. I am filling list with data from DB. SomeThingDBEntity for example. When I am getting it from Room DB (using Room entities), but it has some extra fields that only required for showing elements in RecyclerView. I need to send user's choice from adapter to fragment, then from fragment to activity, than activity sends it to some class that incapsulates logic of work with GLSurface. SomeThingGLentity for example. Now I am passing only fields, that requered by SomeThingGLentity for showing data (int, String etc.), but in future this list can grow. I can also send directly SomeThingDBEntity and get required fields only in the end when apply changes to SomeThingGLentity. But is it OK to use Room DB entity this way?
Is there any better way of doing this? I can also create third class which will only contain required fields. But where to place and how to call it? Maybe there are some patterns or guidelines of best way of doing it...
It looks like you need a data mapper. Something similar to this - https://github.com/android10/Android-CleanArchitecture/blob/master/data/src/main/java/com/fernandocejas/android10/sample/data/entity/mapper/UserEntityDataMapper.java.
If you use this approach, you will be able to encapsulate the transformation logic from your DBEntity to your BusinessEntity, and if you will change the data format in one of them, only your mapper will need to be edited.
Iam making a project in android studio,in my project UI i have created multiple activites for signup like one activity for name,age,gender other for email id and password,now my question is, how to enter these values from multiple activities in single row.
You should use room database as described here: https://developer.android.com/training/data-storage/room/index.html
You can create a common class like helper class. And in this class you can make some property name, age or password. And when an activity finish you can set the value of specific property. And then after last activity you can access common class properties to get each activity values.
I am new to Android App development, working on an android app which populate a list of numbers, in a listview dynamically, depending on the choice of the user, but, the moment user closes the App, the items in the listview are lost. How can I maintain the state of the listview?
Examples with code would be highly appreciated.
When I open Activity A, it allows users to add friends, and this friend list is shown in the form of items of listview in the same Activity, however, when I move to Activity B, and then come back to Activity A, this friend list disappears. I need to make sure that this friend list should not be lost while moving between activities. Please help.
I think that for your purpose there are 3 main methods, i'll explain them from the easier to the most difficult (in my opinion).
Text File
A way to do this is to create two methods in a class:
one has to create the text file in the storage if it isn't created before and read that, the other has to append a String to a StringBuilder and write it on the previous text file.
For this method you need the uses-permission of reading and writing to storage.
This link can help you: http://developer.android.com/training/basics/data-storage/files.html
JSON (also XML)
With JSON file you can create a list of objects with your data that you can serialize when you update the list and deserialize when you want to read it. For this purpose you have to study JavaScript syntax or, at least, JSON one.
SQLite Database
Android SDK incorporate a class named SQLiteOpenHelper that you can extend to create a database inside your app.
This link can help you: http://developer.android.com/training/basics/data-storage/databases.html
There are also references saving methods but i think that aren't right for your purpose, they work betters to save something like preferences or single data like last login informations.
I went through your comment. I would personally suggest using SQLiteOpenHelper
You might need to understand the use of SQLite, hence the tutorial
Simple Flow. On your Activity 1 where person Add Friends save it to DB
Then refresh the List from the DB. So when you move to Activity 2 and come back again to Activity 1 your List will refresh from DB. Hence no loss of data as you want.
EDIT
As user wanted to know how to use the ListView with DB.
Following are my suggestion
Sai Geetha
Youtube
I am developing an eCommerce where I am fetching the Products and sub-products from database at run time.
Here the depth of the sub-products is not fix, means that I don't know at build time that a sub-product of clothes e.g. jeans, again have a sub-product or not.
I think to create Activities dynamically but as per Android Documentation we can not done it.
We have to specify Activities in Android Manifest.xml at build time.
As per your Question you want to display Products and sub-producs dynamically in your application. for that you should have to use Listview to display your UI part and use AsyncTask to Load data from your database/server.
ListView Tutorial :: http://www.vogella.com/tutorials/AndroidListView/article.html
AsyncTask Tutorial :: http://developer.android.com/reference/android/os/AsyncTask.html
First of all you need to clarify the data structure of the product defined in your application. There should be relationship such as foreign key or other constraints defined on your eCommence backend database.
So, there is no need to create activities at runtime. Instead, try to define a base activity to handle the common product operation and other special activities that extend the base activity to handle the differents between the product and the sub-products.
The logic may like this:
Load product data in common activity. then the app decide whether to load the sub-porduct via creating special activities according to the data flag/key defined in product data retrived from database, and so on.
I think expandable list view is best option for that.Because it clearly shows your main product and sub-products to the user.To create and understand expandable list view please see below link :
http://theopentutorials.com/tutorials/android/listview/android-expandable-list-view-example/
I am building an app which allows the user to define multiple objects of a specific type, lets call them "Person"'s. The "Person" object is defined as such:
class Person {
public String name;
public int age;
}
These "Person" objects will be serialised and stored within the app, either in SharedPreferences or via a Cloud storage mechanism. This can be considered handled and working.
My problem is that I need an editor interface to allow the user to change the "name" and "age" of any particular "Person" instance in their collection. In order to make my UI feel as much like stock as possible, I would like my editor interface to resemble the "Preference" interface which Android implements. As such I need a way to make a "PreferenceActivity" load and save it's preferences from/to a POJO.
The reason I am looking to do this is so that I have a UI that feels like something the user is used to using. My other choice is to mimic the style and create all the handling code myself, which will take a lot of time.
I imagined the process would be to override the "load" and "save" functions of a "PreferenceActivity" to pull/push the values from a POJO provided "onCreate" via an "Intent" - and the return this POJO as an activity result to the caller.
Is this achievable?
What is the purpose of having it this way? I fail to see why this would be useful nor how it would be feasible with regards to the reference of the pojo containing the data. If it was possible then the saving object would most likely be a generic key-object map, where you would need to extract the data from, which is exactly how the Preferences already work.
If the point of this is just to have the information in a Person object why not just make a method that creates one based on the saved preferences.
----- Additions
If you add a static/singleton data handler(repository) in the App that will contain all the persons while the App is executing, and that it has some kind of identifier for each person. Then you can pass the ID in the intent to the PreferenceActivity which will in turn fetch the person object from the data handler and fill in the values of the PreferenceActivity based on it.
Add another Preference to the PreferenceActivity named "Save" or similar, which you resolve and bind in the activity. When clicked this will fetch the currently entered information (which will be saved in the SharedPreferences) and create a Person instance out of it. It should then pass this object to the data handler which will add it (or update it if the ID is already there) to the repository of Persons. At this time you should probably consider serializing the whole repository and save it, one easy way is just to JSON it all and put it into the SharedPreferences. Don't forget that you need to load this data the first time you access the data handler so that the previously saved persons are accessible.
I would also recommend you create Interfaces for the data handling action in case you want to add new or replace the implementation to for example database operations instead.
This way you can use the PreferenceActivity for add/editing Persons. Even though I would prefer create your own UI for it.