Android 如何更改listView中一项的颜色背景

Android 如何更改listView中一项的颜色背景,android,listview,Android,Listview,我只想更改listView中一个项目的颜色背景,我目前有以下内容: final ArrayAdapter<String> adapter = new ArrayAdapter<String>(parentActivity, android.R.layout.simple_list_item_1, accountList) { @Override public View getView(int position, View convertView,

我只想更改listView中一个项目的颜色背景,我目前有以下内容:

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(parentActivity, android.R.layout.simple_list_item_1, accountList) {


      @Override
     public View getView(int position, View convertView, ViewGroup parent) {
         View view = super.getView(position, convertView, parent);
              ViewGroup.LayoutParams params = view.getLayoutParams();
              view.setLayoutParams(params);

              TextView textview = (TextView) view;
              textview.setTextSize(15);
              textview.setGravity(Gravity.CENTER);
              textview.setTextColor(Color.WHITE);

              int p = 0;

               for (Accounts c : Register.getAccounts()) {
               if (c.getNumber().equals(accountNumber) && (position == p)){

                  view.setBackgroundResource(R.color.colorPrimaryDark);

               }
          p++;
        }

   return textview;
   }
};

listView.setAdapter(adapter);

正在设置listView的多个元素,谢谢。

请尝试忽略
p
及其条件

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(parentActivity, android.R.layout.simple_list_item_1, accountList) {


  @Override
 public View getView(int position, View convertView, ViewGroup parent) {
     View view = super.getView(position, convertView, parent);
          ViewGroup.LayoutParams params = view.getLayoutParams();
          view.setLayoutParams(params);

          TextView textview = (TextView) view;
          textview.setTextSize(15);
          textview.setGravity(Gravity.CENTER);
          textview.setTextColor(Color.WHITE);

           if (Register.getAccounts().get(position).equals(accountNumber)){

              view.setBackgroundResource(R.color.colorPrimaryDark);

           }

   return textview;
   }
};

listView.setAdapter(adapter);
final ArrayAdapter adapter=新的ArrayAdapter(parentActivity,android.R.layout.simple\u list\u item\u 1,accountList){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
ViewGroup.LayoutParams params=view.getLayoutParams();
view.setLayoutParams(参数);
TextView TextView=(TextView)视图;
textview.setTextSize(15);
textview.setGravity(Gravity.CENTER);
textview.setTextColor(Color.WHITE);
if(Register.getAccounts().get(position).equals(accountNumber)){
视图.setBackgroundResource(R.color.colorPrimaryDark);
}
返回文本视图;
}
};
setAdapter(适配器);
您需要在您的条件中添加一个“else”分支

if (c.getNumber().equals(accountNumber)){
   view.setBackgroundResource(R.color.colorPrimaryDark);
} else {
  view.setBackgroundResource(R.color.white);
}

我改变了你的代码试试这个

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(parentActivity, android.R.layout.simple_list_item_1, accountList) {


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = super.getView(position, convertView, parent);
            ViewGroup.LayoutParams params = view.getLayoutParams();
            view.setLayoutParams(params);

            TextView textview = (TextView) view;
            textview.setTextSize(15);
            textview.setGravity(Gravity.CENTER);
            textview.setTextColor(Color.WHITE);


                if (Register.getAccounts().get(position).getNumber().equals(accountNumber) ){

                    textview.setBackgroundResource(R.color.colorPrimaryDark);

                }else textview.setBackgroundResource(0);



            return textview;
        }
    };

    listView.setAdapter(adapter);
final ArrayAdapter adapter=新的ArrayAdapter(parentActivity,android.R.layout.simple\u list\u item\u 1,accountList){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
ViewGroup.LayoutParams params=view.getLayoutParams();
view.setLayoutParams(参数);
TextView TextView=(TextView)视图;
textview.setTextSize(15);
textview.setGravity(Gravity.CENTER);
textview.setTextColor(Color.WHITE);
if(Register.getAccounts().get(position).getNumber().equals(accountNumber)){
textview.setBackgroundResource(R.color.colorPrimaryDark);
}else textview.setBackgroundResource(0);
返回文本视图;
}
};
setAdapter(适配器);

是否要在for循环视图中增加
p
。setbackground()表示要为每个视图设置背景。我认为应该使用getItem()方法从适配器获取元素,然后设置背景。我还没有试过,但应该是这样的
适配器.getitem(item).getview().setback….()
。但是它应该给所有的元素上色,但是她说
设置了listView的不止一个元素,这意味着至少不是所有元素@Simoexactly这就是我要说的。view.setbackground()正在为所有视图设置背景。因此,即使在检查if()内的条件后,背景也会设置为所有视图。背景也应该特定于视图的位置。@Ophy为什么在Register.getAccounts()内循环,为什么不只检查Register.getAccounts().get(位置).equals(accountNumber)?这不起作用:/正在设置listview的所有元素
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(parentActivity, android.R.layout.simple_list_item_1, accountList) {


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = super.getView(position, convertView, parent);
            ViewGroup.LayoutParams params = view.getLayoutParams();
            view.setLayoutParams(params);

            TextView textview = (TextView) view;
            textview.setTextSize(15);
            textview.setGravity(Gravity.CENTER);
            textview.setTextColor(Color.WHITE);


                if (Register.getAccounts().get(position).getNumber().equals(accountNumber) ){

                    textview.setBackgroundResource(R.color.colorPrimaryDark);

                }else textview.setBackgroundResource(0);



            return textview;
        }
    };

    listView.setAdapter(adapter);