以编程方式创建TouchList

时间:2011-11-05 21:50:14

标签: android layout widget commonsware-cwac

我正在尝试使用此处提供的TouchListView:https://github.com/commonsguy/cwac-touchlist。这是一个用于创建可重新排序列表的Android库。

我可以正常运行演示,但我找不到用Java创建TouchList的方法,即没有在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 个答案:

答案 0 :(得分:1)

问题可能是您在传递null时没有设置任何属性。

默认情况下,控制删除模式的变量设置为-1,根据声明属性的xml文件等于none

private int mRemoveMode = -1;

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

文档指出remove_mode=none表示用户无法删除任何列表条目。

现在,据我所知,如果不使用xml,则无法创建AttributeSet。如果您真的不想使用任何 xml文件,那么您应该调整TouchListView类并添加必要的getter和setter。