簡體   English   中英

如何根據其他活動將按鈕設置為不可見

[英]how to set button invisible depending on another activity

在我的活動中,我通過選中復選框添加了一些東西,如果list.size()>0 (此條件在我的適配器中)顯示了將我重定向到第二個活動的按鈕。 在第二個活動中,我顯示列表視圖,其中填充了靜態列表中的項目,當我單擊它時,我從列表中刪除了對象,在第二個活動中,我也創建了按鈕,以創建此list.clear(); finish(); list.clear(); finish(); 當我返回第一個活動時,即使清除了靜態列表,我仍然可以看到按鈕。 怎么解決呢? 我需要最簡單的想法,因為我是android的初學者。 所有的答案,建議和線索都是可以找到的。 如果您不知道該怎么做,請彈出線程。 感謝您的時間。

public class TowarAdapter extends ArrayAdapter<Towar> {

private List<Towar> items;
private Activity context;
private int i = 0;
ImageButton b_zatwierdz;
int counter = 0;
boolean user_checked = false;


public int getI() {
    return i;
}

public void setI(int i) {
    this.i = i;
}

public TowarAdapter(Activity context, int resource, List<Towar> items,
        ImageButton b_zatwierdz) {

    super(context, resource);

    this.b_zatwierdz = b_zatwierdz;
    this.items = items;
    this.context = context;
}

public int getCount() {
    // TODO Auto-generated method stub
    return items.size();
}

@Override
public Towar getItem(int position) {
    // TODO Auto-generated method stub
    return items.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

static class ViewHolder {
    TextView tvNazwaT;
    TextView tvCenaT;
    ImageView ivTowar;
    CheckBox chb_czy_zamowic;
}

public View getView(final int position, View convertView, ViewGroup parent) {
    final ViewHolder view;
    // LayoutInflater inflator = activity.getLayoutInflater();
    LayoutInflater inflator = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null) {
        view = new ViewHolder();
        convertView = inflator.inflate(R.layout.element, null);

        view.tvNazwaT = (TextView) convertView.findViewById(R.id.tvNazwaT);
        view.tvCenaT = (TextView) convertView.findViewById(R.id.tvCenaT);
        view.chb_czy_zamowic = (CheckBox) convertView
                .findViewById(R.id.chb_czy_zamowic);
        view.ivTowar = (ImageView) convertView.findViewById(R.id.ivTowar);

        convertView.setTag(view);
    } else {
        view = (ViewHolder) convertView.getTag();
    }

    view.tvNazwaT.setText(items.get(position).getTow_nazwa());
    view.tvNazwaT.setTextColor(Color.BLACK);
    view.tvCenaT.setText(items.get(position).getTow_cena() + "zł");

    for (int i = 0; i < items.size(); i++) {
        String s = Integer.valueOf(items.get(position).Kat_id).toString();
        int resourceId = context.getResources().getIdentifier("a" + s + i,
                "drawable", context.getPackageName());
        view.ivTowar.setImageResource(resourceId);
    }

    view.chb_czy_zamowic
            .setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(
                        final CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub
                    if (buttonView.isChecked()) {

                        user_checked = true;

                        if (user_checked == true) {
                            final Dialog d1 = new Dialog(context);
                            d1.setContentView(R.layout.ilosc);
                            d1.getWindow()
                                    .setSoftInputMode(
                                            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                            d1.setTitle("Wybierz ilość");

                            final EditText et_Ilosc;
                            Button b_Ok;
                            Button b_Odejmij;
                            Button b_Dodaj;

                            et_Ilosc = (EditText) d1
                                    .findViewById(R.id.et_Ilosc);

                            et_Ilosc.setText(String.valueOf(i));

                            view.chb_czy_zamowic.setClickable(false);

                            b_Dodaj = (Button) d1
                                    .findViewById(R.id.b_Dodaj);
                            b_Dodaj.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    String zmienna_pom = et_Ilosc.getText()
                                            .toString();
                                    i = Integer.valueOf(zmienna_pom);
                                    if (i < 0) {
                                        Toast t = Toast.makeText(
                                                getContext(),
                                                "Niepoprawna wartość",
                                                Toast.LENGTH_SHORT);
                                        t.show();
                                    } else if (i == items.get(position)
                                            .getTow_ilosc_value()) {
                                        Toast t = Toast
                                                .makeText(
                                                        getContext(),
                                                        "Osiągnięto wartość maksymalną "
                                                                + items.get(
                                                                        position)
                                                                        .getTow_ilosc_value(),
                                                        Toast.LENGTH_SHORT);
                                        t.show();
                                    } else if (i > items.get(position)
                                            .getTow_ilosc_value()) {

                                        Toast t = Toast
                                                .makeText(
                                                        getContext(),
                                                        "Przekroczono wartość maksymalną "
                                                                + items.get(
                                                                        position)
                                                                        .getTow_ilosc_value(),
                                                        Toast.LENGTH_SHORT);
                                        t.show();
                                    }

                                    else if (et_Ilosc.getText().toString()
                                            .equals("")) {
                                        Toast t = Toast.makeText(
                                                getContext(),
                                                "Uzupełnij pole ilość",
                                                Toast.LENGTH_SHORT);
                                        t.show();
                                    } else {
                                        setI(i);
                                        int k = getI();
                                        k++;

                                        setI(k);
                                        et_Ilosc.setText(String.valueOf(i));

                                    }
                                }
                            });
                            b_Odejmij = (Button) d1
                                    .findViewById(R.id.b_Odejmij);
                            b_Odejmij
                                    .setOnClickListener(new OnClickListener() {

                                        @Override
                                        public void onClick(View v) {
                                            String zmienna_pom = et_Ilosc
                                                    .getText().toString();
                                            i = Integer
                                                    .valueOf(zmienna_pom);
                                            if (i < 0) {
                                                Toast t = Toast
                                                        .makeText(
                                                                getContext(),
                                                                "Niepoprawna wartość",
                                                                Toast.LENGTH_SHORT);
                                                t.show();
                                            } else if (et_Ilosc.getText()
                                                    .toString().equals("")) {
                                                Toast t = Toast
                                                        .makeText(
                                                                getContext(),
                                                                "Uzupełnij pole ilość",
                                                                Toast.LENGTH_SHORT);
                                                t.show();
                                            } else {
                                                setI(i);
                                                i--;
                                                setI(i);
                                                et_Ilosc.setText(String
                                                        .valueOf(i));
                                            }

                                        }
                                    });
                            b_Ok = (Button) d1.findViewById(R.id.b_Ok);
                            b_Ok.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                    String zmiennna_pom = et_Ilosc
                                            .getText().toString();
                                    int k = Integer.valueOf(zmiennna_pom);

                                    if (k <= 0
                                            || k > items.get(position)
                                                    .getTow_ilosc_value()) {
                                        Toast t = Toast
                                                .makeText(
                                                        getContext(),
                                                        "Wybierz z przedziału 1-"
                                                                + items.get(
                                                                        position)
                                                                        .getTow_ilosc_value(),
                                                        Toast.LENGTH_SHORT);
                                        t.show();
                                    } else if (et_Ilosc.getText()
                                            .toString().equals("")) {
                                        Toast t = Toast.makeText(
                                                getContext(),
                                                "Uzupełnij pole ilość",
                                                Toast.LENGTH_SHORT);
                                        t.show();
                                    } else {
                                        view.chb_czy_zamowic
                                                .setEnabled(false);

                                        // String zmiennna_pom = et_Ilosc
                                        // / .getText().toString();
                                        // int k = Integer
                                        // .valueOf(zmiennna_pom);

                                        items.get(position).Tow_ilosc -= k;
                                        Towar checkedObject = new Towar();
                                        checkedObject.Tow_ilosc = k;
                                        checkedObject.Kat_id = items
                                                .get(position).Kat_id;
                                        checkedObject.kategoria = items
                                                .get(position).kategoria;
                                        checkedObject.Tow_cena = items
                                                .get(position).Tow_cena;
                                        checkedObject.Tow_id = items
                                                .get(position).Tow_id;
                                        checkedObject.Tow_nazwa = items
                                                .get(position).Tow_nazwa;
                                        MainActivity.lista_wybranych_towarow
                                                .add(checkedObject);
                                        k = 0;
                                        setI(0);
                                        // et_Ilosc.setText("");
                                        d1.dismiss();

                                    }

                                    // view.chb_czy_zamowic.setChecked(false);

                                    if (MainActivity.lista_wybranych_towarow
                                            .size() > 0) {
                                        b_zatwierdz
                                                .setVisibility(View.VISIBLE);

                                    }
                                    else
                                        b_zatwierdz
                                        .setVisibility(View.INVISIBLE);

                                }
                            });
                            d1.show();
                        }
                        ;

                    }
                }

            });

    return convertView;

}
}

要使按鈕不可見,您需要執行以下操作(我只是在提到隱藏按鈕的邏輯-您將必須在偵聽器中實現此操作):

Button button = (Button) findViewById(R.layout.button_id); // Point it to the button
if(list_is_empty) {
    button.setVisibility(Button.GONE); // This line hides the button
}

知道在Android中,“ GONE”用於從視圖中隱藏元素,並且此空間現在在布局中可用。 “不可見”表示在隱藏小部件時,此小部件的空間仍然不可用。

您可以在調用活動時在意圖中添加其他內容,或將標志保存在共享的首選項中。 然后根據標志可以將可見性設置為true或false?

您可以在此處使用startActivityForResult 當您delete object from list 返回boolean where like 'isDelete'並在onActivityResult (這是第一個活動)中檢查此變量是否為true ie object is delete因此將按鈕visibility設置為false,否則不執行任何操作。

您還可以在此處使用sharedpreferences。 跟蹤布爾變量,並根據其值設置按鈕的可見性。

為了共享首選項,請執行以下操作:

刪除對象時,將布爾值寫入共享的首選項

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);  //creating object of shared preference
  SharedPreferences.Editor editor = preferences.edit();  //getting editor to write value
  editor.putBoolean("isShow",false);  //first value is key and second is the value which you are going to assign it
  editor.commit();


and in your main adapter class do :

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean show = preferences.getBoolean("isShow",false);  //first value is key and second value is used if isShow is not defined.

if(show)
//show the button

else
//hide the button

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM