Entering both commands if else?

So, I have this code (updated to solve).

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ...
        final Direction d = directions.get(position);
        if (d != null) {

            TextView direction = (TextView) row.getTag(R.id.directionTextView);
            TextView departure1 = (TextView) row.getTag(R.id.departure1);
            TextView departure2 = (TextView) row.getTag(R.id.departure2);
            TextView departure3 = (TextView) row.getTag(R.id.departure3);

            direction.setText(d.getName());

            if (d.getTimeStamps().size() == 0) {
                departure1.setText(R.string.nodepartures);
                departure1.setTextColor(R.color.grey);
            } else {
                for (int i = 0; i < d.getTimeStamps().size(); i++) {
                    switch (i) {
                    case 0:
                        departure1.setText(d.getTimeStamps().get(i));
                        break;
                    case 1:
                        departure2.setText(d.getTimeStamps().get(i));
                        break;
                    case 2:
                        departure3.setText(d.getTimeStamps().get(i));
                        break;
                    default:
                        break;
                    }
                }
            }
        }
        return row;
    }
}

The problem I ran into was that one of the TextViews would turn gray if this is not intended. I tried to fix it by always adding text to black, but it turned each of them into gray. Until I tried:

setTextColor(context.getResources().getColor(R.color.black));

instead

setTextColor(R.color.black);

I don’t know why the latter works when setting the text to gray, but it is. I guess I'm a little retarded. :)

+3
source share
7 answers

AsLanFromNarnia . ListView . , convertView . , getView. .

, : . , getViewTypeCount, getItemViewType. , convertView, getView , .

+2

, , (*, **). , .

, . if, "then" "else", if. . , , if "then" "else" .

(* , . , .)

(** , , ).

+3

... , . , ? , ?

0

Aircule! ! ?

if(d.getTimeStamps().isEmpty())
{
   departure1.setText(R.string.nodepartures);
   departure1.setTextColor(R.color.grey);
} 
else
{
   departure1.setText(d.getTimeStamps().get(0));
   departure2.setText(d.getTimeStamps().get(1));
   departure3.setText(d.getTimeStamps().get(2));
}

, . , , , , departure1 . , 1, . , -, TextViews, . , - ( ), , , . , .

0

, , .

  • , ? , , - beng
  • , ? , , , 1 ?

switch (, - Text, , , , ):

if (d.getTimeStamps().isEmpty()) {
   departure1.setText(R.string.nodepartures);
   departure1.setTextColor(R.color.grey);
} else {
    Text[] fields = new Text[] { departure1, departure2, departure3 };

    for (int i = 0; i < fields.length && i < d.getTimeStamps().size(); i++) {
        fields[i].setText(d.getTimeStamps().get(i));
        fields[i].setTextColor(R.color.black);
    }
}

, , , , . , , , " ", , .

0

XML , LayoutInflator?

0

, , - 0.

departure1.textColor, , .

You mentioned that you tried to set it to black in the else statement, but everything turned gray. It makes no sense. Try adding a command to convert the text to black in each case, therefore:

case 0:
departure1.setTextColor(R.color.black);
departure1.setText(d.getTimeStamps().get(i));
break;
case 1:
departure2.setTextColor(R.color.black);
departure2.setText(d.getTimeStamps().get(i));
break;
case 2:
departure3.setTextColor(R.color.black);
departure3.setText(d.getTimeStamps().get(i));
break;
0
source

Source: https://habr.com/ru/post/1755562/


All Articles