Порядок перетаскивания - PullRequest
0 голосов
/ 27 июня 2011

может быть, название вопроса не адекватно, вот моя проблема, я начну с примера:

Оригинальная последовательность: 0. Item_105 1. Item_13 2. Item_6 3. Item_14 4. Item_106

Модифицированная последовательность: 0. Item_105 1. Item_14 2. Item_13 3. Item_6 4. Item_106

Здесь я должен иметь 2 индекса: Index1 = 3 Index2 = 1 это означает, что старый элемент 3 перешел на новую позицию 1

На самом деле я работаю с языком C #, и когда я перетаскиваю элемент, чтобы перетащить его на новую позицию, иногда это дает мне хорошие показатели, иногда нет !! это цикл for, который я использовал для получения индексов:

for (int i = 0; i < stops.Count - 1; i++)
{
    if (originalOrder[i] != modifiedOrder[i])
    {
        if (originalOrder[i] == modifiedOrder[i + 1] && index2 == -1)
            index2 = i;
        else if (modifiedOrder[i] == originalOrder[i + 1] && index2 == -1)
            index2 = i;
        if (originalOrder[i] != modifiedOrder[i + 1] && index1 == -1)
            index1 = i;
    }
}

Так что это моя проблема: как получить правильные индексы 1 и 2? Позже мне понадобится немного персонала, если у меня правильные индексы, все остальное в порядке !!

пожалуйста, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 27 июня 2011

Для начала, ассиметрия в вашем коде выглядит подозрительно.Не обращая особого внимания на ваш текущий код, я бы предположил, что он может дать вам правильный ответ, когда вы перетаскиваете элемент в одном направлении, а не в другом.

index1 = -1;
index2 = stops.Count;  // This could be off by one
for (int i = 0; i < stops.Count - 1; i++)
{
    // First, find the bounds of what was moved
    if (originalOrder[i] != modifiedOrder[i] && index1 == -1)
    {
        index1 = i;
    }
    if (index1 != -1 && originalOrder[i] == modifiedOrder[i])
    {
        index2 = i-1;
        // No need to look at any more items
        break;
    }
}
// Swap indices depending on which direction item was moved
if (originalOrder[index1] != modifiedOrder[index2])
{
    int temp = index1;
    index1 = index2;
    index2 = temp;
}

Я не могу сказать по вашемупример того, что останавливается. Количество представляет.Вам нужно убедиться, что индекс 2 инициализирован до последнего индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...