组合两个ArrayAdapter

时间:2012-11-28 17:18:34

标签: android textview master-detail

我的应用程序使用Eclipse中的标准Master / Detail Flow Activity。我想知道是否可以更改某些“任务”的文本,每个任务都位于左侧。

My App

masterData = new ArrayAdapter<MyTasks.taskItem>(getActivity(),
        R.layout.simple_list_item_activated_1,
        R.id.text1,
        MyTasks.ITEMS);
setListAdapter(masterData);

此代码将任务添加到主/明细流,它使用R.Layout中的常量。我无法更改代码,我尝试添加这行代码但没有任何反应:

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" />

我也尝试制作一个自己的xml文件(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" />

但没有任何真正有用的东西。有人能帮我吗?

编辑:

我尝试了这个,但现在我必须组合两个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);

1 个答案:

答案 0 :(得分:1)

您可以尝试扩展ArrayAdapter类,并在其getView方法中更改TextView的颜色。

编辑添加一个例子,无法尝试,但我认为它应该有效。

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;
}

}

然后在你的主要班级:

masterData = new TestAdapter<MyTasks.taskItem>(getActivity(),
    R.layout.simple_list_item_activated_1,
    R.id.text1,
    MyTasks.ITEMS);

setListAdapter(masterData);

您应该查看ViewHolder模式,以使适配器更有效。

希望有所帮助!