Работа с масштабирующей системой с использованием массивов [duplicate]

Комментарий сначала. Вопрос заключался в том, чтобы не использовать try/catch. Если вы не против использовать его, прочитайте ответ ниже. Здесь мы просто проверяем строку JSON, используя regexp, и она будет работать в большинстве случаев не во всех случаях.

Посмотрите вокруг линии 450 в https: / /github.com/douglascrockford/JSON-js/blob/master/json2.js

Существует регулярное выражение, которое проверяет правильность JSON, например:

if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

  //the json is ok

}else{

  //the json is not ok

}

EDIT: новая версия json2.js делает более сложный синтаксический разбор, чем предыдущий, но все же основывается на замене регулярного выражения (из комментария @Mrchief )

4
задан TomRichardson 11 January 2013 в 20:19
поделиться

4 ответа

Это вызвано установкой android:ellipsize="middle" (или start) на TextView, которая не имеет android:singleLine="true".

Например, следующие сбои в этой ошибке:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="middle"
    android:maxLines="1"
    android:text="blahblahblahblahblahblahblahblahblahbla---go really long" />

Но следующее:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="middle"
    android:singleLine="true"
    android:text="blahblahblahblahblahblahblahblahblahbla---go really long" />

Ссылка: https://code.google.com/p/android/issues/detail?id=33868

Примечание: singleLine является устаревшим атрибутом, но все еще работает с Jelly Bean.

9
ответ дан lilbyrdie 19 August 2018 в 17:20
поделиться

Это определенно связано с логикой эллипсиса текстового представления, оно не имеет ничего общего с кодом адаптера.

0
ответ дан Dalvinder Singh 19 August 2018 в 17:20
поделиться

Проверьте размеры макетов и длины столбцов столбца столбца в конструкторе CursorAdapter . Когда несоответствие длины двух массивов, это вызывает ArrayOutOfBoundsException.

0
ответ дан Diederik 19 August 2018 в 17:20
поделиться

ваша проблема находится в методе getView, этот метод будет вызываться всякий раз, когда u прокручивает ваш массив, поэтому убедитесь, что вы проверяете, не является ли представление не нулевым, чем делать какую-либо логику.

0
ответ дан N Jay 19 August 2018 в 17:20
поделиться
  • 1
    Я поставил проверку метода getView, окружающего всю логику, убедившись, что позиция не меньше 0, и я все равно получаю ту же ошибку. – TomRichardson 11 January 2013 в 19:21
  • 2
    Позиция никогда не будет равна -1. – Joseph Earl 11 January 2013 в 19:41
  • 3
    попробуйте проверить, является ли представление не нулевым, прежде чем делать какую-либо логику в getView. – N Jay 11 January 2013 в 21:37
Другие вопросы по тегам:

Похожие вопросы: