Ваш RecyclerView
должен быть указан последним в пределах DrawerLayout
, чтобы иметь правильный z-порядок. В настоящее время он открывает «под» CoordinatorLayout
, поэтому вы не можете манипулировать им прикосновением. Переместите его в положение CoordinatorLayout
.
Я ненавижу эту проблему..., и я сталкиваюсь со всем этим время.
Для моего нового сайта Django у нас была Новостная рассылка, которая содержала Статьи N и, конечно, порядок был важен. Я назначил порядок по умолчанию возрастающий Article.id, но это перестало работать, если Статьи вводились во что-то другое, чем "корректный" порядок.
На странице Newsletter change_form.html я добавил определенное волшебство jQuery использование Интерфейсного плагина ( http://interface.eyecon.ro/ ). Я показываю заголовки связанных Статей, и пользователь может перетащить их вокруг, как им нравится. Существует onChange обработчик, который повторно вычисляет Article.id's в article_order поле.
Обладают,
Peter
Для app=content, model=Newsletter, следующее находится в templates/admin/content/newslettter/change_form.html
{% extends 'admin/change_form.html' %}
{% block form_top %}{% endblock %}
{% block extrahead %}{{ block.super }}
<script type="text/javascript" src="/media/js/jquery.js"></script>
<script type="text/javascript" src="/media/js/interface.js"></script>
<script>
$(document).ready(
function () {
$('ol.articles').Sortable(
{
accept : 'sortableitem',
helperclass : 'sorthelper',
activeclass : 'sortableactive',
hoverclass : 'sortablehover',
opacity: 0.8,
fx: 200,
axis: 'vertically',
opacity: 0.4,
revert: true,
trim: 'art_',
onchange:
function(list){
var arts = list[0].o[list[0].id];
var vals = new Array();
var a;
for (a in arts) {
vals[a] = arts[a].replace(/article./, '');
}
$('#id_article_order').attr('value', vals.join(','));
}
});
}
);
</script>
{% endblock %}
{% block after_related_objects %}
{% if original.articles %}
<style>
.sortableitem {
cursor:move;
width: 300px;
list-style-type: none;
}
</style>
<h4>Associated Articles</h4>
<ol class="articles" id="article_list">
{% for art in original.articles %}
<li id="article.{{art.id}}" class="sortableitem">{{art.title}}</li>
{% endfor %}
</ol>
{% endif %}
{% endblock %}
"добавленный пронумерованное поле порядка" - хороший.
"обновление все объекты с их новыми номерами заказа" - преодолимый.
числа Использования с разрывами.
Плавающая точка. Тем путем кто-то может вставить "1.1" между 1 и 2. Я нахожу, что это работает приятно, поскольку большинство людей может понять, как упорядочивание работает. И Вы не должны волноваться слишком много о сколько пространства для отъезда - существуют партии и много пространства между каждым числом.
На начальной загрузке, пронумеруйте статьи 100 или 1000 или что-то с пространством между каждым. В этом случае необходимо предположить сколько цифр для отъезда в переупорядочение.
А разделенное от запятой положение. Первоначально, они - весь (1,0), (2,0), (3,0), и т.д. Но когда Вы хотите перестроить вещи, Вам, возможно, придется представить (2,1) и (2,2) это следует (2,0), но прежде (3.0).
Это выглядит довольно сложным, но некоторые люди как этот вид сложности. Это - по существу то же, как с плавающей точкой, кроме единственного числа замена (целое число, неявная часть) кортеж. И это расширяется на иерархии дескриптора.
Я столкнулся с этим так много раз, что я обосновался на управлении ими динамично в BL или UI и затем просто сохранении упорядочивания специальному столбцу, после того как пользователь счастлив. SQL просто intentially разработан для не обработки упорядочиваний, и он всегда сопротивляется.
Это поздний ответ на вопрос, но я просто хотел вмешаться и отметить, что B-деревья - отличная структура данных для такого рода вещей, особенно если ваши шаблоны доступа не Не требует, чтобы вы извлекали сразу весь список.