Java 列表片段中的项目不改变颜色
在AndroidStudio 1.0.2中,我试图让列表片段中的项目改变颜色,但存在3个错误,我不知道如何解决它们。我们将非常感谢您的帮助。屏幕截图和代码如下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
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(),而不是在活动中使用它。我正在考虑只为手机制作一个应用程序,因为这对我来说更容易。