java-同时输入if AND else语句?
因此,我有了此代码(已更新以获取解决方案).

    @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;
    }
}

我遇到的问题是,当TextViews不应显示时,它会变成灰色.我尝试通过始终将文本再次设置为黑色来修复它,但这使其中的每一个变为灰色.直到我尝试:

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

而不只是

setTextColor(R.color.black);

不知道为什么在设置文本灰色时后者起作用,但是确实如此.我想我只是有点弱智. 🙂

最佳答案
AsLanFromNarnia处在正确的轨道上. ListView回收其子视图.您永远不能假定convertView的类型处于任何默认状态.每次调用getView时设置每个相关字段.在您的情况下,这意味着在设置文本时设置文本颜色.

还有另一种处理此类情况的方法,您希望拥有异构列表:使用视图类型.您的适配器可以返回getViewTypeCount的类型数,然后从getItemViewType报告每个项目的类型.如果这样做,您将始终获得一个传递给适当类型的getView方法的convertView,从而无需每次都更改静态布局.

点击查看更多相关文章

转载注明原文:java-同时输入if AND else语句? - 乐贴网