代码之家  ›  专栏  ›  技术社区  ›  Balvinder Singh

单击列表外的按钮时显示列表项的隐藏视图

  •  0
  • Balvinder Singh  · 技术社区  · 10 年前

    我正在开发一个Android应用程序。在这个应用程序中,我使用下面给出的代码列出了视图列表。在列表的每个项目中都有一个可见性为“消失”的删除按钮。现在列表外还有一个编辑按钮,单击编辑按钮,我必须在列表的每个项目上显示删除按钮。但使用此代码删除按钮仅在最后一项中显示。请帮我解决这个问题。谢谢

    dynamicView();
    
    
    edit.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            //  lay.removeAllViews();
            addnew.setVisibility(View.INVISIBLE);
    
            btn_red.setVisibility(View.VISIBLE);
            edit.setText("Done");
    
            }
        });
    
    public void dynamicView() {
    
         LayoutInflater linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            for (int i = 0; i < templates.length; i++) {
                final View customView = linflater.inflate(R.layout.order_template_item,
                        null);
                btn_red=(ImageView)customView.findViewById(R.id.btn_negative);
                btn_drag=(ImageView)customView.findViewById(R.id.button_drag);
                btn_delete=(ImageView)customView.findViewById(R.id.button_delete);
               final ImageView image = (ImageView)customView.findViewById(R.id.arrow);
               final TextView text = (TextView)customView.findViewById(R.id.date);
               final TextView sku = (TextView)customView.findViewById(R.id.time);
               final TextView price = (TextView)customView.findViewById(R.id.last);
               final TextView names =(TextView)customView.findViewById(R.id.name);
    
               image.setId(i);
               text.setId(i);
               sku.setId(i);
               price.setId(i);
               names.setId(i);
               btn_red.setId(i);
               btn_red.setTag(i);
               btn_delete.setId(i);
               btn_drag.setId(i);
    
              names.setText(templates[i]);
    
               btn_red.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    btn_delete.setVisibility(View.VISIBLE);
                    TranslateAnimation anim = new TranslateAnimation(100,0 , 0, 0);
                    anim.setInterpolator(new BounceInterpolator());
                    anim.setDuration(1000);
                    btn_delete.setAnimation(anim);
                }
            });
               btn_delete.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                lay.removeView(customView); 
    
                }
            });
    
    
               lay.addView(customView);
         }
    
    2 回复  |  直到 10 年前
        1
  •  0
  •   cliffroot    10 年前

    你只引用了最后一个 btn_red .

    你可以这样做。

    List<Button> buttons = new LinkedList<Button> ();
    

    然后在你的循环中 findViewById 在…上 btn_红色

    buttons.add(btn_red);
    

    最后在你的 onClickListener

    for (Button button: buttons) {
        button.setVisibility(View.VISIBLE);
    }
    
        2
  •  0
  •   Devendra B. Singh    10 年前

    执行以下操作以显示添加到列表项的所有按钮-

    edit.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
            addnew.setVisibility(View.INVISIBLE);
    
    
            for (int i = 0; i < templates.length; i++) {
    
              int id  = btn_red.getId(i);
              id.setVisibility(View.VISIBLE);
           }
           edit.setText("Done");
    
            }
        });