gpt4 book ai didi

java - ListView 项目文本不改变颜色

转载 作者:行者123 更新时间:2023-12-02 04:37:00 25 4
gpt4 key购买 nike

我正在尝试使用自定义适配器更改列表项的文本颜色,以便它们每个都有自己的颜色,但我收到一个错误,我不知道如何修复。如何解决这个错误?

enter image description here

import android.content.Context;
import android.graphics.Color;
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;

public class FragmentLineChooserList extends android.support.v4.app.Fragment {

ListView list_linechooser;

String[] listContent = {
"Line 1",
"Line 2",
"Line 3"
};

private boolean mTwoPane;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_line_chooser_list, container, false);

list_linechooser = (ListView)v.findViewById(R.id.list_linechooser);
MyColoringAdapter adapter = new MyColoringAdapter(this,listContent);
list_linechooser.setAdapter(adapter);

return v;
}

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_item);
textView.setText(values[position]);
int textColorId = R.color.white;
switch (position) {
case 0:
textColorId = R.color.green; break;
case 1:
textColorId = R.color.orange; break;
case 2:
textColorId = R.color.blue; break;
}
textView.setTextColor(getResources().getColor(textColorId));
return rowView;
}
}
}

最佳答案

MyColoringAdapter 构造函数的第一个参数是 Context。一个Fragment不是Context ,因此您无法像在 Fragment 中尝试那样将 this 传递到构造函数中。

您可以通过调用getActivity()来获取Fragment的Activity(这是一个Context)。

关于java - ListView 项目文本不改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com