2012-11-12 19 views
0

在我的Android應用程序中,我需要分別更改ListView的每個項目的背景顏色。
我沒有找到任何示例或有用的文檔。如果雙精度值爲0,背景應該會改變。我設置了ListView屬性:android:drawSelectorOnTop="true"並使用了下面的代碼:
(它的所有功能,只有背景不變!)我該如何解決這個問題?android:如何更改運行時的ListViewItem背景? (不適用於選擇)

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

回答

0

我想改變背景顏色響應點擊的方法是將更改應用到您的onClickListener實現給你傳入視圖。你似乎正在搞亂setContentViews等,這是不是要走的路。 SetContentView設置您的總體佈局,並且很少有理由在Activity中多次調用它。

+0

單擊項目/視圖時,顏色不變。它只是改變,當 1.點擊另一頁(我有3頁)和 的按鈕2.控制雙(VStand),然後有值0. 我用setContentView切換3頁/ XML -files。 in onItemClick我將位置定義爲點擊視圖的位置,並在上面的空白處表示(onclickButtonOKStand): 設置List的子項的背景顏色(表示ListView中的項目)的位置「Position 「變成紅色。我錯了嗎?有沒有我錯過的一個方面? – user1781734

相關問題