2012-11-12 2 views
0

내 안드로이드 응용 프로그램에서 ListView의 각 Item의 배경색을 개별적으로 변경해야합니다.
예제 또는 유용한 문서를 찾지 못했습니다. double 값이 0이면 배경이 바뀌어야합니다. ListView Property : 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 - 파일. onItemClick 내가 클릭 한 뷰의 위치로 Position을 정의하고 위의 void (onclickButtonOKStand)에서 말했다 : List의 하위 요소 (ListView의 항목을 의미)의 위치를 ​​"Position "빨간색으로. 내가 틀렸어? 제가 놓친면이 있습니까? – user1781734

관련 문제