【问题标题】:How to show/enable a button on ListView onItemLongClick如何在 ListView onItemLongClick 上显示/启用按钮
【发布时间】:2012-11-24 10:01:56
【问题描述】:

我有一个 Android 应用程序。在我从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);

【问题讨论】:

    标签: android long-press


    【解决方案1】:

    .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】:

      在您的适配器的获取视图方法中为您的按钮设置唯一 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);
      }
      };`
      

      【讨论】:

        【解决方案3】:

        假设你在 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);
            }
        };`
        

        【讨论】:

        • 嗨 Flavio,我的布局中只有一个列表视图。如何在我的布局中向列表项添加按钮?你能告诉我在列表视图中向列表项添加按钮后布局的样子吗?
        • 您使用一个 xml 作为列表视图的行。如果您想在用户单击行时在列表视图行中显示一个按钮。然后你可以在 ListView 的行的 xml 中使用按钮。
        • 您应该投票回答以感谢您的回答。如果对您有帮助。如果有人帮助您解决问题,最后接受答案
        • 我想我明白我需要设置按钮的可见性。但是如何在布局中将按钮添加到 ListView 的 listitem 中?目前我的布局 XML 中只有 ListView。
        • 您是否为列表视图行使用一种布局..在此添加一个按钮。有关列表视图的更多信息,请参阅此内容androidtrainningcenter.blogspot.in/2012/09/…
        【解决方案4】:

        您可以将布尔标志 isDeleteVisible 添加到 Account 与默认 false 值。

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

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

        【讨论】:

          猜你喜欢
          • 2019-08-23
          • 2020-07-13
          • 2017-07-08
          • 1970-01-01
          • 1970-01-01
          • 2014-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多