Long总是返回-1

时间:2014-12-22 11:50:23

标签: android

我检查网站是否已发布新项目,如果是,则检查字符串值" new"添加到这些项目中。

现在是长期值" date"始终保持在-1,结果是字符串值" new"在每个项目之后添加,也为昨天添加的项目添加。 "新"不应该显示今天以前的值,请帮助。

谢谢。

public class TopicView extends LinearLayout implements LoadTopicImageCallback {

private LoadTopicImageTask topicImageTask = null;
private boolean newItem = false;
private long date = -1;

public TopicView(final Context context, final Topic topic) {
    super(context);
    init(topic);
}

public TopicView(final Context context, final Topic topic, final String suffix) {
    super(context);
    init(topic);

    final long latest = new Settings(context).getLatest(suffix);
    try {
        final Date d = Util.parseDate(topic.getTime());
        date = d.getTime();
    } catch (final ParseException e) {
    }
    //String new gets added//
    if (latest == -1 || date > latest) {
        findViewById(R.id.topic_view_new).setVisibility(View.VISIBLE);
        newItem = true;
    }
}

public boolean isNewItem() {
    return newItem;
}

public long getDate() {
    return date;
}

编辑:

public static String formatDate(final long dt) {
    return formatDate(new Date(dt));
}

public static String formatDate(final Date date) {
    final DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    return df.format(date);
}

public static final Date parseDate(final String date) throws ParseException {
    final String pattern = "EEE MMM dd, yyyy h:mm a";
    return parseDate(date, pattern);
}

public static final Date parseDate(final String date, final String pattern)
        throws ParseException {
    final SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.US);
    return format.parse(date);
}

1 个答案:

答案 0 :(得分:0)

除非你确定要调用第二个构造函数,否则你永远不会在这里初始化date

public TopicView(final Context context, final Topic topic) {
    super(context);
    init(topic);
    // add some initialisation for "date" here
}

即使你是这样,看到那么一小部分代码也会有所帮助。

顺便说一句,我是否可以指出消耗异常是好的,但即使是一小撮调试输出也可以帮助您实现长期目标。也许改变

try {
    final Date d = Util.parseDate(topic.getTime());
    date = d.getTime();
} catch (final ParseException e) {
}

为:

try {
    final Date d = Util.parseDate(topic.getTime());
    date = d.getTime();
} catch (final ParseException e) {
    e.printStackTrace(); // Or some log that your define yourself.
}