Android 更改数组适配器中列表项的文本颜色
我创建一个列表视图,并在自定义对话框中实现该列表视图。该列表视图使用阵列适配器,而在我的阵列适配器中,我使用的是具有所需颜色的自己的布局。代码如下所示Android 更改数组适配器中列表项的文本颜色,android,android-listview,radio-button,android-arrayadapter,Android,Android Listview,Radio Button,Android Arrayadapter,我创建一个列表视图,并在自定义对话框中实现该列表视图。该列表视图使用阵列适配器,而在我的阵列适配器中,我使用的是具有所需颜色的自己的布局。代码如下所示 listView = new ListView(context); ArrayAdapter<String> adapter = new ArrayAdapter<String>(Loged.this, R.layout.my_spinner_layout, items)
listView = new ListView(context);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Loged.this,
R.layout.my_spinner_layout, items);
listView.setAdapter(adapter);
listView=新的listView(上下文);
ArrayAdapter=新的ArrayAdapter(Loged.this,
R.layout.my_微调器(布局,项目);
setAdapter(适配器);
在这里,单击“我的列表项的侦听器”可以正常工作
问题现在开始了。我需要在自定义警报对话框中创建一个列表视图,每行包含一个单选按钮。我用同样的方法。这是我的密码
listView = new ListView(context);
ArrayAdapter<String>adapter = new ArrayAdapter<String>(context,R.layout.my_single_choice_layout, choice);
listView.setAdapter(adapter);
listView=新的listView(上下文);
ArrayAdapteradapter=新的ArrayAdapter(上下文,R.layout.my_single_choice_布局,choice);
setAdapter(适配器);
这里可以同时检查所有单选按钮。我的听众工作不好。
我的微调器布局xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
style="@style/ListItemTextColor"
/>
还有我的_single _choice _layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:id="@+id/my_choice_radio"
android:layout_height="match_parent"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"
android:text="Option"
style="@style/ListItemTextColor" >
</RadioButton>
您必须为此使用自定义适配器 jst参考的示例代码,它不是完整的实现
class Myadapter extends ArrayAdapter<String>{
LayoutInflater inflater=null;
public Myadapter(Context context, int resource, int textViewResourceId,
List<String> objects) {
super(context, resource, textViewResourceId, objects);
inflater = (LayoutInflater)getLayoutInflater();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
if(convertView==null){
row= inflater.inflate(R.layout.activity_list_item, null);
RadioButton rb = row.findViewById(R.id.radiobtn);
rb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
//here write your code for radio button event
}
});
}
return row;
}
}
class Myadapter扩展了ArrayAdapter{
排气充气机=空;
公共Myadapter(上下文上下文、int资源、int textViewResourceId、,
列出对象){
超级(上下文、资源、textViewResourceId、对象);
充气器=(LayoutFlater)GetLayoutFlater();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图行=转换视图;
if(convertView==null){
行=充气机。充气(R.layout.activity\u list\u项,空);
RadioButton rb=行findViewById(R.id.radiobtn);
rb.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
//TODO自动生成的方法存根
//在这里编写单选按钮事件的代码
}
});
}
返回行;
}
}
试试这个:
list.setAdapter(new EfficientAdapter(context,R.layout.my_single_choice_layout, choice));
然后创建一个类
public class EfficientAdapter extends ArrayAdapter {
private LayoutInflater mInflater;
private String[] mStrings;
private int mViewResourceId;
public EfficientAdapter(Context ctx, int viewResourceId,String[] strings) {
super(ctx, viewResourceId, strings);
mInflater = (LayoutInflater)ctx.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
mStrings = strings;
mViewResourceId = viewResourceId;
}
@Override
public int getCount() {
return mStrings.length;
}
@Override
public String getItem(int position) {
return mStrings[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = mInflater.inflate(mViewResourceId, null);
convertView.setMinimumHeight(132);
TextView tv = (TextView)convertView.findViewById(R.id.option_text); //Give Id to your textview
tv.setText(mStrings[position]);
tv.setTextColor(Color.RED);
RadioButtons r=(RadioButtons)convertview.findviewById(Radio button id);
r.setOnCheckedListener(new ur listener()
{
/////////Do whatever you wanna do overhere
});
return convertView;
}
}
希望有帮助。但是对于简单的列表项目,我将我的ArrayAdapter更改为ArrayAdapter=new ArrayAdapter(Loged.this,R.layout.my_spinner,items);intead of ArrayAdapteradapter=新的ArrayAdapter(上下文,android.R.layout.simple_列表_项,选项);它的工作不需要CstomAdapter。那你有什么问题??我说如果你想改变TextView textColor运行时,那么你需要实现自定义适配器。我的问题是,每行的单选按钮都是同时被选中的。而且监听器也不起作用,因为你们必须实现自定义的采纳器,在那个里膨胀你们的视图&设置setoncheckedchangestiner for radioButtoncheck文章谢谢。我只需要更改
返回视图
to返回super.getView(position,convertView,parent)代码>以使其工作。