How to set attribute value of child view attribute from parent xml? - android

I have same kind of row value which are going to repeat in my activity multiple times so I have designed one row.xml for that and included required number of rows in my activity.xml by using include tag so if I want to change the value of the view which is there inside the row.xml file from activity.xml then how should we do that? I know that we can achieve this in Activity class and accessing it from activity but i want to deal this issue from xml only.
Thanks in advance.

Related

How to create dynamic xml file in res in android

I want solution of following:
I have create xml file in data/data/com.example.file/files/abc.xml so during running of app how I get this abc.xml in res/layout and should display on screen.
Thanks.
In general, the XML vocabulary for declaring UI elements closely
follows the structure and naming of the classes and methods, where
element names correspond to class names and attribute names correspond
to methods.
Courtesy goes to #Mike M : You cant create this .XML files used for layouts are pre-compiled .
I'm not sure I have followed your question- are you trying to attach a child view to the RelativeLayout? If so you want to do something along the lines of:
RelativeLayout item = (RelativeLayout)findViewById(R.id.item);
View child = getLayoutInflater().inflate(R.layout.child, null);
item.addView(child);
the RelativeLayout item will be the container for your child view.
Your question needs to be a bit more specific, but here's a general answer:
If you are using fragments then you should re-create your fragment and then use:
inflater.inflate(R.layout.abc, container, false);
If you are using activities then you should use:
setOnContentView(abc);

Get the desired view when dealing with fragments when the view's id has a duplicate name in both xml

I'm dealing now with fixed tabs and fragments. I have 2 tabs. But it happened that the 2 xml files are a copy and paste they differ slightly. I do not want to change the id name of each view there.
The first xml file name is :first.xml
the second is :second.xml
When initializing the views in my main activity extending the 2 fragments (inner classes), how can I determine the desired views if they have the same id name ?
For example:
TextView tv = (TextView)findViewById(R.id.textView1); //However, this exists in both first.xml and second.xml , how can I tell it to take it from second.xml and not from first.xml ?
Thank you!

How to Dynamically check if XML contains UI Element

I have multiple XML files that need to be used by one Activity for its view, the Activity will load an XML file from the name passed to it when its created. These XML files will contain a set of UI elements such as buttons that will have a standardised name (ie UpBtn, DownBtn).
The views will be different (containing different button names) but I want to be able to check if a button of a specific name exists within the XML so that I can perform a specific action in the Activity.
Is there a way of doing this or will I have to resort to having an Activity per XML?
In your xml, provide your views with an unique id
<Button
android:id="#+id/upBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
In your activity, provided that you have already called setContentView() with one of the XML files, you can call findViewById() to find a particular view by its id:
Button upBtnView = (Button) findViewById(R.id.upBtn);
If this view is present in the xml you provided, upBtnView will be the button you want; otherwise, upBtnView will be null, and you will know that it is not there in your layout.
You can use findViewById( id ) and if it returns null then the id you specified doesn't exist.

addFooterView for a ListView that is defined in the xml

I've got a ListView, which is fully defined in the xml file. Now I want to add a footer to thi s list so that the last element of the list became a button.
So firstly I do this: View v = getLayoutInflater().inflate(R.layout.add_new, null);, where add_new is the layout for my footer
Now I know that I need to do smth like this:
listViewInstance.addFooterView(v);
But i dont really have that instance as my ListView is defined in an xml file. So what do I write instead of listViewInstance? Is there a way to get its instance somehow from an xml?
Thanks in advance xxx
Use ListActivity.getListView() if you are using a ListActivity or Activity.findViewById() to get the reference to the list view otherwise.

Change ExpandableList view programmatically

I have an ExpandaleList, and BaseExpandableListAdapter which I implements.
Now sometimes I need to show other xml content, So I am trying to do:
ExpandableList.this.setContentView(R.layout.errorscreen);
but then I get this exception:
ERROR/AndroidRuntime(23948): java.lang.RuntimeException, Your content must have a ExpandableListView whose id attribute is 'android.R.id.list'.
Now, I have been told to do this in order to fix it:
add ExpandableListView to your xml layout and set it's id to list. Like so:
<ExpandableListView android:id="#id/android:list" android:layout_width="fill_parent"android:layout_height="fill_parent"/>
How to do it programmatically?
You are setting this Activity's contentView to a Layout which is defined in an xml file called errorscreen.xml:
ExpandableList.this.setContentView(R.layout.errorscreen);
The activity you're doing this from however extends ExpandableListActivity (I guess). Such an Activity needs an ExpandableListView in it's xml to display it's data. Now simply open your errorscreen.xml and add this element.
Cheers

Categories

Resources