在Listview中设置按钮启用为false

时间:2018-02-02 04:19:57

标签: android listview

我希望在点击后禁用listview中针对该特定行的按钮。 现在,我可以禁用它,但在重新启动活动后,它再次变为可点击状态。下面是我的适配器的代码。请让我知道我该怎么做,谢谢!

public View getView(final int position, View view, ViewGroup viewGroup) {
        Typeface face_02 = Typeface.createFromAsset(context.getAssets(), "customfont/grb.otf");
        ViewHolder holder = new ViewHolder();

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(layout, null);
            holder.Boothname = (TextView) view.findViewById(R.id.Boothname);
            holder.buttonVote= (Button) view.findViewById(R.id.buttonvote);

            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();
        }
        BoothClassFunAward product = productList.get(position);

        holder.Boothname.setText(product.getBoothName());
        holder.Boothname.setTypeface(face_02);
        holder.buttonVote.setTypeface(face_02);

        final ViewHolder finalHolder = holder;


        holder.buttonVote.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finalHolder.buttonVote.setText("Completed");
                Intent intent2 = new Intent(context, ProgramActivity.class);
                context.startActivity(intent2);
            }
    });
        return view;
    }

2 个答案:

答案 0 :(得分:0)

首次点击按钮时需要设置布尔值。您可以基于此启用和禁用。

禁用:

holder.buttonVote.setEnabled(false);

For Enabled:

holder.buttonVote.setEnabled(true);

答案 1 :(得分:0)

有两种情况。

  • 如果从服务器收到数据,即列表视图中显示的列表

如果您从服务器接收数据,那么为了维持按钮的状态,您必须在服务器收到的响应中添加一个布尔标志,该按钮已被点击或未被点击。很明显,按钮对应于一个动作,因此在同一个音符上你必须在同一个动作中更新服务器关于被点击按钮的状态。

  • 整个操作都是本地操作,没有完成任何服务器交互。

为此,您将不得不依赖本地数据库或共享首选项。 请确保做以下事情

  1. 在pojo类中添加一个布尔标志,从而在列表中添加每个对象 将有一个标志来表示它的状态。
  2. 单击按钮后更改标志的状态。因此,根据点1,只有所选对象的标志状态将发生变化,其余部分将不受影响。
  3. 通知您的清单。您将使用此对象来决定是否保留 启用或禁用按钮。
  4. 保存列表,以便在使用时保持整个更改 下次列出。
  5. 您可以使用数据库或共享首选项来保存列表。