如何在ListView的onItemLongClick事件中显示/启用一个按钮

3

我有一个安卓应用程序。在我的活动之一中,该活动派生自ListActivity,我已经实现了OnItemLongClickListener。我想在相关列表项中启用一个删除按钮,其中ListItem已被长按。我应该如何做?

    OnItemLongClickListener listener =  new OnItemLongClickListener(){
        public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
            Account a = null;
            a = (Account) av.getItemAtPosition(position);               
            Toast.makeText(AccountActivity.this, "Long Clicked : " + a.getAccountName(), Toast.LENGTH_LONG).show();

            //instead of the toast, I need to show/enable a button here...
        }
    };
    getListView().setOnItemLongClickListener(listener);
4个回答

3

.xml

  <Button
  android:id="@+id/imgdelete"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" 
  android:visibility="invisible"/>

.java

lv.setOnItemLongClickListener(new OnItemLongClickListener() {     

@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view, int arg2, long arg3) {

       view.findViewById(R.id.imgdelete).setVisibility(View.INVISIBLE);
       return false;

 }            

});

2
在您的适配器中的get view方法中,为您的按钮设置唯一id。
btn.setId(position);

在您的点击监听器中,然后...
OnItemLongClickListener listener =  new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {    
    Button btn = (Button) v.findViewById(position);
    btn.setEnabled(true);
}
};`

1
假设您在ListView的行布局中有一个按钮,那么您可以将其设置为可见true。
OnItemLongClickListener listener =  new OnItemLongClickListener(){
    public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
        Account a = null;
        a = (Account) av.getItemAtPosition(position);               
        v.findViewById(R.id.btnid).setVisiBility(View.VISIBLE);
    }
};`

嗨,Flavio,我在我的布局中只有一个列表视图。我该如何在列表项中添加一个按钮到我的布局中?你能展示一下在列表视图中添加按钮后的布局是什么样子吗? - Nalaka
您可以使用一个XML文件为ListView的每一行设置样式。如果您希望在用户单击某一行时,在该行内显示一个按钮,则可以将该按钮放置在ListView行的XML文件中。 - user1881979
如果答案对您有帮助,请给予投票以表达感谢。最后,如果有人帮助您解决了问题,请接受答案。 - user1881979
我认为我理解了我需要设置按钮的可见性。但是,我如何将按钮添加到布局中ListView的列表项中?目前,我的布局XML中只有ListView。 - Nalaka
你是否在使用一个布局来显示ListView的行,如果是的话,在其中添加一个按钮。查看此链接以了解更多关于ListView的内容:http://androidtrainningcenter.blogspot.in/2012/09/listview-example-in-android-with-image.html - user1881979

1

你可以在Account中添加布尔标志isDeleteVisible,默认值为false

然后在OnItemLongClickListener中将其设置为true并调用adapter.notifyDataSetChanged()

在适配器的getView中检查isDeleteVisible并显示或隐藏删除按钮。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接