0

私のAndroidアプリでは、ListViewの各アイテムの背景色を個別に変更する必要があります。
例や役立つドキュメントは見つかりませんでした。doubleの値が0の場合、背景が変わるはずです。ListViewプロパティを設定し、 android:drawSelectorOnTop="true" 次のコードを使用しました:(
すべて機能し、背景のみが変更されません!)この問題を解決するにはどうすればよいですか?

public void onClickButtonOKStand (View view) {
        EditAusgabe = (EditText) findViewById(R.id.EditText01);
        if (EditAusgabe.getText().toString().length() <= 0) {
            Toast T = Toast.makeText(getApplicationContext(), "Eingabe ungültig! Geben Sie einen Betrag ein", Toast.LENGTH_LONG);
            T.show();
            return;
        }
        if (EditAusgabe.getText().toString() == ".") {
            Toast T = Toast.makeText(getApplicationContext(), "Eingabe ungültig! Geben Sie einen Betrag ein", Toast.LENGTH_LONG);
            T.show();
            return;         
        }

        Z = Double.parseDouble(EditAusgabe.getText().toString());

        if (VArt == "Down") {
            if (VStand >= Z) {
                VStand = VStand - Z;
                if (VStand <= 0.39) {
                    Toast T = Toast.makeText(getApplicationContext(), "Ihr Guthaben ist aufgebraucht!", Toast.LENGTH_strong textLONG);
                    T.show();
                    VStand = 0.00;

****************** The next line is my problem: ******************************

StartListe.getChildAt(Position).setBackgroundColor(color.holo_red_light);
                }
            }
            else if (VStand < Z) {
                Toast T = Toast.makeText(getApplicationContext(), "Vorgang nicht möglich! Ihr Konto liegt bei " + FORMAT.format(VStand) + " €.", Toast.LENGTH_LONG);
                T.show();
                EditAusgabe.setText("");
                return;
            } 
        }

        if (VArt == "Up") {
            VStand = VStand + Z;
        }

        Stand.set(Position, FORMAT.format(VStand));
        Liste.set(Position, (VName + "               " + FORMAT.format(VStand) + " € / " + FORMAT.format(VWert) + " €"));
        ListeAktualisieren();
    }

    public void ListeAktualisieren () {
        setContentView(R.layout.activity_ausgabenkontrolle);
        ArrayAdapter<String> ListenAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, Liste);
        StartListe = (ListView) findViewById(R.id.listView1);
        StartListe.setAdapter(ListenAdapter);
        StartListe.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> ListenAdapter, View view, int i, long ID) {
                // TODO Auto-generated method stub
                Item = view;
                Position = ListenAdapter.getPositionForView(view);
                VName = Namen.get(Position);
                VArt = Arten.get(Position);
                VWert = Double.parseDouble(Werte.get(Position).toString());
                VStand = Double.parseDouble(Stand.get(Position).toString());
                setContentView(R.layout.activity_stand);
                if (VArt == "Down") {
                    if (VStand == 0) {
                    Toast T = Toast.makeText(getApplicationContext(), "Ihr Guthaben ist aufgebraucht!", Toast.LENGTH_LONG);
                    T.show();
                    }
                }
            }
        });
        registerForContextMenu(StartListe);
    }
4

1 に答える 1

0

クリックに応じて背景色を変更する方法は、 onClickListener 実装で指定された受信ビューに変更を適用することだと思います。setContentViews などをいじっているようですが、これは進むべき道ではありません。SetContentView は全体的なレイアウトを設定します。Activity で複数回呼び出す理由はほとんどありません。

于 2012-11-13T00:57:24.167 に答える