check Listview Item onRatingBarChanged

  • Antworten:4
  • Bentwortet
Bastian Seidemann
  • Forum-Beiträge: 137

07.10.2014, 11:16:01 via Website

Hallo Leute,

stehe wieder mal vor einem knifflichen Problem.

Ich habe ein listitem mit einer Ratingbar:

Siehe hier:

image

Ich möchte den "listitemchecked" state von der Ratingbar im jeweiligen Item abhängig machen.

Sprich:

Solange das Rating 0 ist bleibt das Item unchecked und kann auch via onItemClick nicht gecheckt werden.

Wenn das Rating > 0 wird das Item automatisch gecheckt.

Das ganze funktioniert auch im Adapter mit folgendem Code:

holder.rating.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

    @Override
    public void onRatingChanged(RatingBar ratingBar, float rating,
            boolean fromUser) {
        // TODO Auto-generated method stub

        View rowView = (View) ratingBar.getParent();
        if(rating>0){
        ((ListView)parent).setItemChecked(position, true);
        }else{
        ((ListView)parent).setItemChecked(position, false);
        }
        TextView text = (TextView) rowView
                .findViewById(R.id.starsnum1);
        text.setText(String.valueOf(rating));

    }
});

Wie schaffe ich es nun in meiner eigentlichen Activity das Rating der RatingBars in den Listitems auszulesen ohne den OnItemClickListener zu verwenden?

Danke schonmal :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

07.10.2014, 17:33:54 via Website

Also das kommt darauf an, wie du die RatingBar setzt (per Code;XML etc.)
Aber ansatzweise kannst du es so machen:

 for(int i =0;i < listiView.getChildCount();i++) //Alle items der listView durchgehen
            {
                RatingBar rti =  (RatingBar)  listView.getChildAt(i).findViewById(R.id.rating); //Das Viewitem der listView &uuml;ber den Iterator i bekommen und dann die RatigBar auf der aktuellen view per ID suche (geht nur wenn di e View eine ID hat)
                float rating = rti.getRating(); //Das aktuelle Ratig abfragen

//Vlt noch abspeichern etc.,

            }

Das problem dabei wird sein, dass du das Rating ja für alle RatingBars bekommst, musst du die verschiedenen Rating noch in de Schleife verarbeiten oder irgend einem Key zuordnen, damit du weisst, was der Rating wert bedeutet.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Bastian Seidemann
  • Forum-Beiträge: 137

08.10.2014, 11:12:34 via Website

Hi und danke für die Antwort.
Aber mit dieser Variante bekomme ich wie es aussieht nur die sichtbaren listitems.

Ich habe 10 Childs in der Liste und bekomme aber nur die sichtbaren 6.

Irgendeine Idee?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

08.10.2014, 14:03:21 via App

Wie setzt du denn die RatigBars. Hast du einen Eigenen Adapter dafür?
Dann dann kannst du auch ein Array mit den Elementen anlegen und dieses dann in einer schleife durchgehen und deine Werte auslesen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Bastian Seidemann
  • Forum-Beiträge: 137

10.10.2014, 01:55:02 via App

So hab ichs gemacht :) Danke!

Antworten