Создать TouchList программно - PullRequest
0 голосов
/ 06 ноября 2011

Я пытаюсь использовать TouchListView, доступный здесь: https://github.com/commonsguy/cwac-touchlist. Это библиотека Android для создания переставляемых списков.

Я могу нормально запустить демонстрацию, но не могу найти способ создания TouchList в Java, т.е. без определения его в макете XLM.

Вот код из демо:

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    TouchListView tlv=(TouchListView)getListView();
    adapter=new IconicAdapter();
    setListAdapter(adapter);

    tlv.setDropListener(onDrop);
    tlv.setRemoveListener(onRemove);
}

Это внутри ListActivity. Это отлично работает. Теперь вот что я пытался избежать использования ListActivity:

...
TouchListView tlv = new TouchListView(this, null);
adapter=new IconicAdapter();
setListAdapter(adapter);
...

Не повезло.

LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
TouchListView tlv = (TouchListView) (inflater.inflate(R.layout.touchlistview, null));

тоже не работает.

В обоих случаях список отображается правильно, но я не могу перемещать элементы.

Есть идеи?

1 Ответ

1 голос
/ 06 ноября 2011

Возможно, проблема в том, что вы не устанавливаете какие-либо атрибуты, когда передаете null.

По умолчанию переменная, управляющая режимом удаления, установлена ​​на -1, что равно none в соответствии с XML-файлом, объявляющим атрибуты.

private int mRemoveMode = -1;

и

<attr name="remove_mode">
    <enum name="none" value="-1" />
    ...
</attr>

В документации указано, что remove_mode=none означает, что пользователь не может удалить любые записи списка.

Теперь, насколько я знаю, вы не можете создать AttributeSet без использования xml.Если вы действительно не хотите использовать какие-либо xml файлы, то вам, вероятно, следует адаптировать класс TouchListView и добавить необходимые методы получения и установки.

...