如何动态更改列表视图项?

时间:2013-03-30 17:12:28

标签: android android-layout android-listview listviewitem

我基本上想要一些类似于Twitter或Pocket应用程序的东西,你可以长按列表视图中的一个项目,它会为你提供一组选项,通过更改该项目的布局来对该项目执行,以显示一组按钮。

ListView lv= getListView();
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> av, View v,
            int pos, long id) {
        // TODO Auto-generated method stub
        Context ctx = getApplicationContext();
        mDbHelper.deleteNotes(id);
        fillData();
        Toast.makeText(ctx, "Long Clicked at" + id, Toast.LENGTH_SHORT).show();
        return false;
    }       
});

我的长按代码就在这里。对,知道我只是直接删除长按的项目,但是我希望用户在长按一个项目代替上述项目时看到3-4个按钮。

任何人都知道怎么做?

EDIT 这是推特图片:

enter image description here

2 个答案:

答案 0 :(得分:0)

查看this link,指出其他有用的链接。您必须使用ContextMenu来实现“3-4按钮”。

编辑: 也许this one

答案 1 :(得分:0)

您可以做的是,当用户长时间按下时,只需在您的适配器内,隐藏或显示例如包含所有按钮等的LinearLayout。

确保您显示的此元素适合所有其他常用元素的下方或上方。

你得到我想说的话吗?霍拉如果您需要更多信息。

更新1

好的,回复你的评论,不,你不需要创建一个单独的xml文件等。例如,见

您的自定义行xml有两个布局:

RelativeLayout mainView

RelativeLayout extraView

在你的行中,xml有一个额外的布局(我的偏好是相对的,无论如何都取决于你),并将此布局设置为低于主要内容(确保它们都适合行)。因此,在这种情况下,mainView是一个布局,其中包含您总是想要显示的内容,而extraView是您只需要长按时所需的内容。 确保extraView的默认可见性设置设置为GONE

然后,只需长按,即特定行extraView.setVisibility(View.VISIBLE);

显然反之亦然,不再长时间按下。

如果你感到困惑,请打电话给我,并且因为我正在上下班并通过我的手机回复而没有格式化的回复道歉,会在电脑上格式化答案。