Eine TextView-Änderung gilt für mehrere TextViews, die ListView und ArrayAdapter verwenden.

Ich habe vor nicht allzu langer Zeit angefangen, an einem kleinen Projekt zu arbeiten. Das Hauptziel ist es, einen Weg zu finden, wie ich meine Aktionen im Verlauf von 100 Wochen verfolgen kann.

Ich bin immer noch ein Anfänger-Android-Entwickler und habe ein Problem festgestellt, das ich nicht erklären konnte.

rundsätzlich habe ich eine ListView mit dem ArrayAdapter mit einer Liste gefüllt, die 100 Zeichenfolgen enthält (Woche1, Woche2, Woche3 ... Woche100

Einrichten eines Onclicklistener für jede der TextViews, sodass die Hintergrundfarbe zu Rot wechselt, wenn ein Benutzer auf eine Textview klickt.

Jedoch; Wenn ich auf eine einzelne Textansicht klicke, werden mehrere Textansichten eingefärbt.

Anmerkungen

Ich verwende eine ScrollView, um durch die gesamte Liste zu scrollen. (Nach dem Auffüllen füllt die 100-Wochen-Liste den gesamten Bildschirm aus. Die Bildlaufansicht wird verwendet, um auf die gesamte Liste zuzugreifen.)

Ich habe auch einen Verweis auf die aktuell gezeichnete Textansicht gespeichert, damit ich sicherstellen kann, dass die vorherige Textansicht ihren roten Hintergrund verliert, wenn ein Benutzer auf eine andere Textansicht klickt.

MainActivity-Initialisierung:

public class MainActivity extends ActionBarActivity 
{
TextView selectedWeek; // Reference to the selected week.
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    populateWeekList(); // Populating the ListView
    initWeekClick(); // Initializing click listener
}

Auffüllen der ListView:

public void populateWeekList()
{
    String[] weeks = new String [100]; // 100 weeks
    for (int i=0; i<100;i++)
    {
        weeks[i] = "Week"+(i+1);
    }
    ArrayAdapter<String> weekAdapter = new ArrayAdapter<String>(
            this,
            R.layout.weeksview,
            weeks
    );

    // R.id.weekTypeList is just a normal TextView.
    ListView weekList=(ListView) findViewById(R.id.weekTypeList); 
    weekList.setAdapter(weekAdapter);
}

Code zum Initialisieren von onClickListener und Speichern der ausgewählten Wochenreferenz:

public void initWeekClick()
{
    ListView weekList=(ListView) findViewById(R.id.weekTypeList);
    weekList.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) 
        {
            if (selectedWeek != null) 
            {
                selectedWeek.setBackgroundColor(0);
            }
            TextView clicked = (TextView) viewClicked;

            // Change clicked TextView color to red.
            clicked.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light));

            // Save the selected week reference
            selectedWeek = clicked;
        }
    });
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage