Android setBackground或多列Listview的文本颜色';s特定行

Android setBackground或多列Listview的文本颜色';s特定行,android,android-listview,Android,Android Listview,如何为特定行设置ListView的背景 ListView list = getListView(); sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets}); list.setAdapter(s

如何为特定行设置ListView的背景

    ListView list = getListView();
     sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets});
     list.setAdapter(sd);
     list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
     list.setSelected(true);
     list.setTextFilterEnabled(true);
     list.setItemsCanFocus(true);
     list.setSelectionAfterHeaderView();

     if(isVisitedToVisitHeader()){
         if(defaultRoutePos != 0){
            Log.i("-----" ,"---defaultRoutePos---" + defaultRoutePos +" --count-- "+list.getChildCount());
             list.setItemChecked(defaultRoutePos, true);
            // list.getChildAt(positions).setBackgroundColor(R.color.red);
             //list.getChildAt(defaultRoutePos).setBackgroundColor(R.color.red);
         }
     }
这是我的代码。我已经使用了
SimpleAdapter
。在这里
list.getChildCount()
give 0。我正在
onCreate()
中输入这部分内容

请帮帮我


提前感谢

package com.android.listactivity

导入android.app.Activity; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.ViewGroup

import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
    private final Activity context;
    private final String[] names;

    public MySimpleArrayAdapter(Activity context, String[] names) {
        super(context, R.layout.rowlayout, names);
        this.context = context;
        this.names = names;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.rowlayout, null, true);
        TextView textView = (TextView) rowView.findViewById(R.id.label);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        textView.setText(names[position]);
        // Change the icon for Windows and iPhone
        String s = names[position];
我建议使用自定义适配器,如上所示:


如果没有,您可以尝试获取list.getPositionForView(view)为所需的特定位置设置背景色或图像

package com.android.listactivity

导入android.app.Activity; 导入android.view.LayoutInflater; 导入android.view.view; 导入android.view.ViewGroup

import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
    private final Activity context;
    private final String[] names;

    public MySimpleArrayAdapter(Activity context, String[] names) {
        super(context, R.layout.rowlayout, names);
        this.context = context;
        this.names = names;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.rowlayout, null, true);
        TextView textView = (TextView) rowView.findViewById(R.id.label);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        textView.setText(names[position]);
        // Change the icon for Windows and iPhone
        String s = names[position];
我建议使用自定义适配器,如上所示:


如果没有,您可以尝试获取list.getPositionForView(视图)为所需的特定位置设置背景色或图像

检查此自定义ListView示例

这也是StackOverflow的答案


签出此自定义ListView示例

这也是StackOverflow的答案


否。它不起作用。我正在使用
simpledapter
使用多列。是否可以使用
simpledapter
?请帮助我您是否尝试获取列表。getPositionForView(view)并为所需的特定位置设置背景色或图像无效。它不起作用。我正在使用
SimpleAdapter
使用多列。是否可以使用
SimpleAdapter
执行此操作?请帮助我您是否尝试获取列表。getPositionForView(view)并设置所需特定位置的背景色或图像我正在使用
SimpleAdapter
使用多列。是否可以使用
SimpleAdapter
执行此操作?请帮助我使用
simpledapter
使用多栏。可以使用
simpledapter
吗?请帮助我无法使用基本的
SimpleAdapter
。您需要自己的
getView()
的细粒度控制。您必须记住,
ListView
会回收视图,并且当前可见内容之外的位置(6项左右,视情况而定)实际上并不存在
listview.getChildAt()
返回第n个可见行,因此位置将无法正确映射。无法使用基本
SimpleAdapter
。您需要自己的
getView()
的细粒度控制。您必须记住,
ListView
会回收视图,并且当前可见内容之外的位置(6项左右,视情况而定)实际上并不存在
listview.getChildAt()
返回第n个可见行,因此位置将无法正确映射。