Werte anstatt in einer XML in einer Activity setzen

  • Antworten:8
Gelöschter Account
  • Forum-Beiträge: 227

11.12.2014, 14:17:44 via Website

Hallo, ich habe eine ProgressBar in meiner App und derzeit kann ich den Wert (0-100) der ProgressBar nur in der XML setzen:
android:progress="75"

Was kann ich machen damit ich die Werte in einer Activity setzen kann?

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

11.12.2014, 14:20:52 via App

Die bar per findView von dem Layout holen und dann progressBar.setProgress(int percent);//hier eine Zahl <0 >= 100 reinschreiben
progressBar.setMax(100);//z.b. für % werte

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 227

11.12.2014, 14:47:55 via Website

Ich habs jetzt so gemacht: (geht leider nicht)

package app;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class ListViewAdapter extends ArrayAdapter<String> {
  private final Activity context;
  private final String[] names;

  static class ViewHolder {
    public TextView text;
    public Button button;
    public ProgressBar bar;
  }

  public ListViewAdapter(Activity context, String[] names) {
    super(context, R.layout.rowlayout_layout, names);
    this.context = context;
    this.names = names;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {

      //System.out.println("getView");
       View rowView = convertView;

    //views
    if (rowView == null) {
      LayoutInflater inflater = context.getLayoutInflater();
      rowView = inflater.inflate(R.layout.rowlayout_layout, null);

      //configure view holder
      ViewHolder viewHolder = new ViewHolder();
      viewHolder.text = (TextView) rowView.findViewById(R.id.label);
      viewHolder.button = (Button) rowView.findViewById(R.id.button);
      viewHolder.bar = (ProgressBar) rowView.findViewById(R.id.progressbar);

      progressbar.setProgress(int percent <100> );
//oder
      progressbar.setMax(100);

      rowView.setTag(viewHolder);
    }

    //fill data
    ViewHolder holder = (ViewHolder) rowView.getTag();
    String s = names[position];
    holder.text.setText(s);

    //example data to test "status" red or green
    holder.button.setBackgroundResource(R.drawable.round_button_red);;

    holder.button.setBackgroundResource(R.drawable.round_button_green);

    return rowView;
  }

} 

— geändert am 11.12.2014, 19:59:49

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

11.12.2014, 18:30:27 via App

Du solltest nicht Copy and paste machen sondern mein Codebeispiel richtig verwenden..
Test nicht bestanden ;)
also

in die Methode setPercent musst du deine aktuelle Prozentzahl als Parameter übergeben.
LG

— geändert am 11.12.2014, 18:30:39

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 227

11.12.2014, 18:45:51 via Website

Okay jetzt hab ichs:

progressbar.setProgress(100);
bzw.
int percent = 100;
progressbar.setProgress(percent);

Nur kommt jetzt immer der Fehler progressbar cannot be resolved.

dann müsste ich die Zeile noch so ändern:
holder.bar.setProgress(80);

Ich habe die Progressbar in einer Listview und ein Array mit Werten von 0-100 (9 Werte). Ich möchte jetzt in den 9 Zeilen jeweils immer den Wert aus dem Array mit der ProgressBar angezeigt haben. Wie geht das?

— geändert am 11.12.2014, 18:49:51

Antworten
Sven R.
  • Forum-Beiträge: 1.904

11.12.2014, 18:59:01 via App

Kurt

dann müsste ich die Zeile noch so ändern:
holder.bar.setProgress(80);

Ja, natürlich musst du die Werte aus dem Array beziehen.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
Gelöschter Account
  • Forum-Beiträge: 227

11.12.2014, 20:06:21 via Website

String l = leistung[position];
holder.bar.setProgress(l);

nur muss ich jetzt das String Array in ein Integer Array umwandeln. Wie geht das?

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

11.12.2014, 20:08:03 via App

Wenn in deinem String Array ausschiesslich Zahlen sind kannst du ein Integer Array nehmen. Dann musst du kein Parse benutzen.

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

Antworten
pepperonas
  • Forum-Beiträge: 434

13.12.2014, 07:26:30 via App

Kurt

String l = leistung[position];
holder.bar.setProgress(l);

nur muss ich jetzt das String Array in ein Integer Array umwandeln. Wie geht das?

gibt 4 Möglichkeiten:
1. So wie es Pascal gesagt hat (also int array)
2. deineZahl = Integer.parse(deinString)
3. Mit der Maus über den Fehler fahren und schauen was die IDE dazu zu sagen hat
4. Auf stackoverflow.com "string to int Java" suchen (<- dort findest du praktisch ALLES) ☺

Open Source

Antworten