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

时间:2014-08-21 09:02:03

标签: android custom-view

我正在开发Android应用程序。在这个应用程序中,我使用下面给出的代码制作视图列表。在列表的每个项目中都有删除按钮,其中包含可见性" Gone"。现在列表外有另一个按钮编辑,点击编辑按钮我必须在列表的每个项目上显示删除按钮。但使用此代码删除按钮仅显示在最后一项中。请帮我解决问题。感谢。

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 个答案:

答案 0 :(得分:0)

您仅持有对最后一个btn_red的引用。

你可以这样做。

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

然后在findViewById

btn_red后的循环中
buttons.add(btn_red);

最后在你的onClickListener

for (Button button: buttons) {
    button.setVisibility(View.VISIBLE);
}

答案 1 :(得分:0)

执行以下操作,使所有添加到列表项的按钮可见 -

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");

        }
    });