3

我有一个安卓应用程序。在我的一项活动中ListActivity,我已经实现了OnItemLongClickListener. 我想在ListItem已被 LongClicked 的相关列表项中启用删除按钮。我怎样才能做到这一点?

    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

4 回答 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;

 }            

});
于 2012-12-06T11:52:32.497 回答
2

在您的适配器的获取视图方法中,为您的按钮设置唯一 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);
}
};`
于 2012-12-06T11:49:07.690 回答
1

isDeleteVisible您可以Account使用默认值添加布尔标志false

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

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

于 2012-12-06T11:23:39.633 回答
1

假设您在 ListView 的行布局中有一个 Button,那么您可以使其可见`

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);
    }
};`
于 2012-12-06T11:35:32.423 回答