My application uses the standard Master/Detail Flow Activity from Eclipse. I was wondering if it's possible to change the text of some 'Tasks', each task is located at the left.
masterData = new ArrayAdapter<MyTasks.taskItem>(getActivity(),
R.layout.simple_list_item_activated_1,
R.id.text1,
MyTasks.ITEMS);
setListAdapter(masterData);
This code adds the Tasks to the Master/Detail Flow, it uses a constants from R.Layout. I can't change the code, I tried adding this line of code but nothing happens:
android:textColor="#FF0000"
R.layout.simple_list_item_activated_1:
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2010 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
I also tried making a own xml file (commenttextview.xml):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/commenttext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FF0000"
android:background="?android:attr/activatedBackgroundIndicator"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
But nothing realy works. Can someone help me?
Edit:
I tried this but now I have to combine the two ArrayLists:
nc_masterData = new ArrayAdapter<MyTasks.taskItem>(getActivity(),
R.layout.nocommenttextview, R.id.nocommenttext);
c_masterData = new ArrayAdapter<MyTasks.taskItem>(getActivity(),
R.layout.commenttextview, R.id.commenttext);
for (int i = 0; i < MyTasks.ITEMS.size(); i++) {
if (MyTasks.ITEMS.get(i) != null) {
if (MyTasks.customers[(Integer.parseInt(MyTasks.ITEMS.get(i).id))][10].equals("0")) {
nc_masterData.add(MyTasks.ITEMS.get(i));
}else{
c_masterData.add(MyTasks.ITEMS.get(i));
}
}
}
setListAdapter(nc_masterData);
You can try to extend the ArrayAdapter class, and in its getView method, change the color of the TextView.
Edited to add an example, couldn't try it but I think it should work.
public class TestAdapter extends ArrayAdapter<MyTasks.taskItem> {
private int resource;
private int textViewResourceId;
private Context context;
private List<MyTasks.taskItem> objects;
public TestAdapter(Context context, int resource, int textViewResourceId, List<MyTasks.taskItem> objects)
{
super(context, resource, textViewResourceId, objects);
this.context = context;
this.resource = resource;
this.textViewResourceId = textViewResourceId;
this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = vi.inflate(resource, null);
TextView tv = (TextView) view.findViewById(textViewResourceId);
tv.setText(objects.get(position).toString()); //Not sure about taskItem class toString
tv.setTextColor(Color.parseColor("#FF0000"));
return view;
}
}
And then in your main class:
masterData = new TestAdapter<MyTasks.taskItem>(getActivity(),
R.layout.simple_list_item_activated_1,
R.id.text1,
MyTasks.ITEMS);
setListAdapter(masterData);
You should take a look into the ViewHolder pattern in order to make the adapter more effective.
Hope that helps!