Asynctask仍然按钮隐藏取决于值

时间:2016-02-15 08:40:54

标签: android android-asynctask android-sqlite

我正在创建一个显示对象列表的应用。我有一个错误处理,如果值小于或等于10,下一个和上一个按钮将被隐藏但是当我搜索一个超过10的值时,下一个和上一个按钮仍然是隐藏的

protected void onPostExecute(Void result) {

    btnback2 = (Button) findViewById(R.id.back);
    btnnext2 = (Button) findViewById(R.id.next);

    if (GetSearchValue.size() <= 10) {
        btnback2.setVisibility(View.INVISIBLE);
        btnnext2.setVisibility(View.INVISIBLE);
    }

    btnback2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View convertView) {
            new ValueBack2().execute();
        }
    });
    btnnext2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View convertView) {
            new ValueNext2().execute();
        }
    });

    super.onPostExecute(result);
    Asycdialog.dismiss();
}

2 个答案:

答案 0 :(得分:1)

我相信这是因为您之后进行了搜索,因此您需要在需要时显示这些小部件,因为它们被之前的搜索隐藏起来。

btnback2.setVisibility((GetSearchValue.size() <= 10) ? View.INVISIBLE : View.VISIBLE);
btnnext2.setVisibility((GetSearchValue.size() <= 10) ? View.INVISIBLE : View.VISIBLE);

为什么要绑定onClickListenrs中的onPostExecute()而不是onCreate()?这不是正确的方法(而且毫无意义)

此外,您无需致电super.onPostExecute() - 超设计中没有任何设计。

答案 1 :(得分:-1)

试试这段代码: -

protected void onPostExecute(Void result) {

  btnback2 = (Button) findViewById(R.id.back);
  btnnext2 = (Button) findViewById(R.id.next);
  btnback2.setVisibility(View.VISIBLE);
  btnnext2.setVisibility(View.VISIBLE);
  if (GetSearchValue.size() <= 10){
                      btnback2.setVisibility(View.INVISIBLE);
                      btnnext2.setVisibility(View.INVISIBLE);
  }

  btnback2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View convertView) {
          new ValueBack2().execute();
      }
  });

  btnnext2.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View convertView) {
          new ValueNext2().execute();
      }
  });

  super.onPostExecute(result);
  Asycdialog.dismiss();
}