gpt4 book ai didi

android - 导致 ListView 行的 onClick 提供编辑选项

转载 作者:行者123 更新时间:2023-11-29 01:59:39 24 4
gpt4 key购买 nike

我想要单击 ListView 中的一行并提供按钮以对我在所述行中显示的内容进行基本编辑的效果。现在我并不是要将 TextView 完全更改为可编辑 TextView ,而是仅提供诸如“编辑”和“删除”之类的按钮的东西。这可以通过弹出窗口来完成,但我试图避免这种情况,我希望这些操作按钮替换该行的显示内容。

起初我认为它可以有两种布局来膨胀成行。一个“活跃”和一个正常。单击它只会返回所单击行的不同布局,并有一个标记来指示哪一行是当前选定的行。第一次遇到我没想到的问题,当 ListView 向上和向下滚动时,膨胀的 View 被回收。很好,好的,所以我对 BaseAdapter 进行了扩展,这样我就可以用 getView() 做我自己的事情了。好吧,我设法让它正确地允许回收 View (而不是在不应该的地方重用“Activity ” View )但是我看不出有什么办法让它刷新/重新加载备用布局,除非将所述行从屏幕上滚动然后再打开。似乎没有办法强制 getView() 实际发生,除非一行离开屏幕并返回。

所以这是一个双头问题。有没有办法让单行在显示时换掉膨胀的 View ?第二,也许我这样做的方法是一种倒退的方式来完成我想要的,还有更好的方法吗?感谢您的宝贵时间!

public View getView(int position, View convertView, ViewGroup parent) {
View v;
Boolean activeExists = false;
if(convertView!=null && convertView.getTag()==(String) "active"){
activeExists=true; }
if (((position==activeFlag && activeExists==true) || (position!=activeFlag && activeExists==false)) && convertView!=null) {
v = convertView;
} else if(position==activeFlag && activeExists==false){
v = inflater.inflate(rowlayoutActive, parent, false);
v.setTag((String) "active");
} else if (position!=activeFlag && activeExists==true) {
v = inflater.inflate(rowlayout, parent, false);
} else {
v = inflater.inflate(rowlayout, parent, false);
}
bindView(position, v);
return v;
}

(在这个 getView 之外,我有 (int) activeFlag 来记住哪个是当前“选定的”,我有我自己的 bindView 版本,它与正常版本没有太大区别。 bool 值是已经膨胀的 View 的快速标记,以防止错误的 View 在回收时转到错误的行。)

最佳答案

问得好,部分答案可能是您考虑了 MVC 模型。严格来说,您应该修改基础数据以导致 UI 发生变化,这表明可能向您的数据“isEditing”或类似内容添加一个 bool 值,通过单击设置它然后调用 notifyDataSetChanged。在 getView 中,您将测试该 bool 值以使用适当的布局。

关于android - 导致 ListView 行的 onClick 提供编辑选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298518/

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