Java 列表片段中的项目不改变颜色

Java 列表片段中的项目不改变颜色,java,android,android-studio,Java,Android,Android Studio,在AndroidStudio 1.0.2中,我试图让列表片段中的项目改变颜色,但存在3个错误,我不知道如何解决它们。我们将非常感谢您的帮助。屏幕截图和代码如下 package com.apptacularapps.exitsexpertlondonlite; import android.app.ListFragment; import android.content.Context; import android.content.Intent; import android.os.Bundl

在AndroidStudio 1.0.2中,我试图让列表片段中的项目改变颜色,但存在3个错误,我不知道如何解决它们。我们将非常感谢您的帮助。屏幕截图和代码如下

package com.apptacularapps.exitsexpertlondonlite;

import android.app.ListFragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class LinesListFragment extends ListFragment {

    ListView linechooserList;

    String[] line = {"Bakerloo line",
            "Central line",
            "Circle line",
            "District line",
            "Hammersmith & City line",
            "Jubilee line",
            "Metropolitan line",
            "Northern line",
            "Piccadilly line",
            "Victoria line",
            "Waterloo & City line",
            "Docklands Light Railway",
            "London Overground",
            "Tramlink"
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lineslistfragment);


        linechooserList = (ListView)findViewById(R.id.lines_listView);
        MyColoringAdapter adapter = new MyColoringAdapter(this,line);
        linechooserList.setAdapter(adapter);

        linechooserList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                //When clicked, go to specific activity

            }
        });
    }

    private class MyColoringAdapter extends ArrayAdapter<String> {
        private final Context context;
        private final String[] values;

        public MyColoringAdapter(Context context, String[] values) {
            super(context, R.layout.list_item, values);
            this.context = context;
            this.values = values;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View rowView = inflater.inflate(R.layout.list_item, parent, false);
            TextView textView = (TextView) rowView.findViewById(R.id.list_textview);
            // Set text
            textView.setText(values[position]);
            // Set color depending on position
            int textColorId = R.color.white; // Default color
            switch (position) {
                case 0: textColorId = R.color.bakerloo; break;
                case 1: textColorId = R.color.central; break;
                case 2: textColorId = R.color.circle; break;
                case 3: textColorId = R.color.district; break;
                case 4: textColorId = R.color.hc; break;
                case 5: textColorId = R.color.jubilee; break;
                case 6: textColorId = R.color.metropolitan; break;
                case 7: textColorId = R.color.white; break;
                case 8: textColorId = R.color.piccadilly; break;
                case 9: textColorId = R.color.victoria; break;
                case 10: textColorId = R.color.wc; break;
                case 11: textColorId = R.color.dlr; break;
                case 12: textColorId = R.color.overground; break;
                case 13: textColorId = R.color.tramlink; break;
            }
            textView.setTextColor(getResources().getColor(textColorId));
            return rowView;
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.lineslistfragment, container, false);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
    }
}

package com.apptacularaps.exitexpertlondonlite;
导入android.app.ListFragment;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
公共类LinesListFragment扩展了ListFragment{
列表视图行选择器列表;
String[]line={“Bakerloo line”,
“中线”,
“圆线”,
“地区线”,
“Hammersmith&City line”,
“禧年线”,
“大都会线”,
“北线”,
“皮卡迪利线”,
“维多利亚线”,
“滑铁卢和城市线”,
“码头区轻轨”,
“伦敦地上”,
“电车线”
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.lineslistfragment);
linechooserList=(ListView)findViewById(R.id.lines\u ListView);
霉色素适配器=新霉色素适配器(此,行);
linechooserList.setAdapter(适配器);
linechooserList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
//单击后,转到特定活动
}
});
}
私有类MyColoringAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]值;
公共MyColoringAdapter(上下文,字符串[]值){
super(上下文、R.layout.list_项、值);
this.context=上下文;
这个值=值;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.list\u项,父项,false);
TextView TextView=(TextView)rowView.findViewById(R.id.list\u TextView);
//设置文本
setText(值[位置]);
//根据位置设置颜色
int textColorId=R.color.white;//默认颜色
开关(位置){
案例0:textColorId=R.color.bakerloo;中断;
案例1:textColorId=R.color.central;中断;
案例2:textColorId=R.color.circle;中断;
案例3:textColorId=R.color.district;中断;
案例4:textColorId=R.color.hc;中断;
案例5:textColorId=R.color.jubilee;break;
案例6:textColorId=R.color.metropolitan;中断;
案例7:textColorId=R.color.white;中断;
案例8:textColorId=R.color.piccadilly;中断;
案例9:textColorId=R.color.victoria;中断;
案例10:textColorId=R.color.wc;中断;
案例11:textColorId=R.color.dlr;中断;
案例12:textColorId=R.color.overground;中断;
案例13:textColorId=R.color.tramlink;中断;
}
setTextColor(getResources().getColor(textColorId));
返回行视图;
}
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
返回充气机。充气(R.layout.lineslistfragment,容器,假);
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
}
}
红色下划线错误

您正在使用一个片段,因此您应该在onCreateView中膨胀布局并初始化变量

由于您使用的是ListFragment,因此可以像这样将项目设置到listview适配器

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
              "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
              "Linux", "OS/2" };

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
    android.R.layout.simple_list_item_1, values);

    setListAdapter(adapter);
}
@覆盖
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
字符串[]值=新字符串[]{“Android”、“iPhone”、“WindowsMobile”,
“黑莓”、“WebOS”、“Ubuntu”、“Windows7”、“Max OS X”,
“Linux”、“OS/2”};
ArrayAdapter=新的ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,值);
setListAdapter(适配器);
}

您可以阅读有关ListFragments和List的更多信息。

好的,但是更改每个项目的颜色如何?如果在初始化适配器时仍然存在该错误,则必须提供上下文。你应该在片段中使用getActivity(),而不是在活动中使用它。我正在考虑只为手机制作一个应用程序,因为这对我来说更容易。