gpt4 book ai didi

android:如何使用行中的删除按钮从 ListView 中删除一行

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:19 25 4
gpt4 key购买 nike

我知道有很多主题或多或少相同的话题,但没有一个能涵盖我的情况:

我正在使用我的自定义行使用自定义 CursorAdapter 填充我的 ListView。 ListView 有两种状态:第一种状态仅包含行中的文本;第二种状态在每一行都有一个删除按钮。两种状态之间的切换是 View 底部的一个按钮。

我尝试实现的是:在第一种状态下,当我单击该行时,屏幕应切换到另一个 View 。在第二种状态下,当我点击删除按钮时,选定的行应该从数据库中删除,ListView 应该被重新填充,如果我按下该行的任何其他部分而不是删除按钮,则不会发生任何事情。

我知道如何删除一个项目并在之后重新填充 ListView,并且我知道在第一个状态下单击该行时如何切换到另一个 View ;但我无法将两者结合起来。我正在使用以下方法获取行的 ID 和位置:

protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
//Code goes in here either for deleting or switching into another view
}

我尝试使用一些 if 语句来获取单击删除按钮或单击行的条件,但它不起作用。

第一个问题很明显:我怎样才能让它发挥作用?

第二个问题是:在第二种状态下,当按下除删除按钮以外的行的任何部分时,屏幕会切换到另一个 View 。我怎样才能防止这种情况发生?我尝试将行的 .setClickable、.setPressed、.setSelected 属性设置为 false,但没有帮助。

提前感谢您的回复。

最佳答案

In second state when any part of the row is pressed other than delete button screen switches to the other view. How can I prevent this?

简单地为 deleteButton 设置一个监听器

   @Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = null;
LayoutInflater inflater = getLayoutInflater();

row = inflater.inflate(R.layout.one_result_details_row, parent, false);

// inflate other items here :
Button deleteButton = (Button) row.findViewById(R.id.Details_Button01);
deleteButton.setTag(position);

deleteButton.setOnClickListener(
new Button.OnClickListener() {
@Override
public void onClick(View v) {
Integer index = (Integer) view.getTag();
items.remove(index.intValue());
notifyDataSetChanged();
}
}
);

在 getView() 方法中,您标记要放置的 ListItem

deleteButton.setTag(position);

getTag() 对象转换为整数

然后在 OnClickListener() 中删除项目

 items.remove(index.intValue());  

关于android:如何使用行中的删除按钮从 ListView 中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com