Hintergrund in List View

  • 6 Antworten
  • Letztes Antwortdatum
J

Jajobe

Erfahrenes Mitglied
14
Hallo.
Ich stehe vor einem relativ kleinen Problem.
Und zwar habe ich diesen Sourcecode und diese xml Datei:

Code:
<?xml version="1.0" encoding="utf-8"?>  
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:clickable="false"
     android:padding="10dp"
     android:textSize="16sp" />

Code:
package com.bjcreative.tachometer;

import android.app.ListActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class BatteryActivity extends ListActivity {
	
    /** Called when the activity is first created. */
	private String[] strText = new String[] {"Battery Level", "Voltage", "Status"};
	private int voltage = 0;
	private boolean trun = true;
	private Handler myHandler = new Handler();
	private Runnable myRun = new Runnable() {
		public void run() {
			updateNow();
		}
	};
	
	// using Thread to keep the process running
	private Thread myThread = new Thread() {
		public void run () {
			do {
    			batteryLevelUpdate();

    			myHandler.post(myRun);
    			
    			try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}    			
			} while (trun);
		}
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        
        
        
        startMonitor();

    }
    
    @Override
    public void onDestroy() {
    	trun = false;
    	super.onDestroy();
    }
    
    /*
    @Override
    public void onPause() {
    	trun = false;
    }
    
    @Override
    public void onResume() {
    	trun = true;
    }*/
    
    private void startMonitor() {
    	myThread.start();
    }
    
    private void updateNow() {
    	ListView thisListView = getListView();
    	thisListView.setEnabled(true);

    	ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.battery, strText) {  
    	       public boolean isEnabled(int position)  
    	       {  
    	           return false;  
    	       }  
    	     }; 
    	

    	thisListView.setAdapter(myList);
    }
    
    private void batteryLevelUpdate() {
        BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
            	context.unregisterReceiver(this);
                int rawlevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
                int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
                int level = -1;
                if (rawlevel >= 0 && scale > 0) {
                    level = (rawlevel * 100) / scale;
                }
                voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);

                int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
                int onplug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
                boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
                boolean onUSB = onplug == BatteryManager.BATTERY_PLUGGED_USB;
                boolean onAC = onplug == BatteryManager.BATTERY_PLUGGED_AC;
                String strStatus = "Charging on ";
                if (isCharging && onUSB)
                	strStatus += "USB";
                else if (isCharging && onAC)
                	strStatus += "AC Power";
                else
                	strStatus = "Battery Discharging";
                
                strText[0] = "Battery Level: " + Integer.toString(level) + "%";
                strText[1] = "Voltage: " + Integer.toString(voltage) + "mV";
                strText[2] = strStatus;
            }
        };
        IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(batteryLevelReceiver, batteryLevelFilter);
    }
    
}

Wenn ich nun wie gewohnt den Hintergrund in der xml Datei festlegen möchte, verschiebt es die ganze View. Also jede Spalte wird das ganze Hintergrundbild zugeordnet und nicht für die ganze Liste eines.
Daher meine Frage: Wie kann man den Hintergrund für eine ganze Listview einstellen? :confused2:
Vielen Dank schon im Voraus für die Antworten.
MfG Jannik
 
kleinerkathe schrieb:
Ich tippe mal, dass die XML oben das Layout eines Listitems ist, dann ist es auch kein Wunder, wenn du dem einzelnen Item einen BG hinzufügst, dass dieser dann an jedem Item sichtbar wird.

Achja Spalte? Du meinst Zeile oder? ;)

Wo ist die XML in der deine Listview eingefügt wird? ;)

//EDIT: Du programmierst da seit Anfang 2013 rum?:
java - Data from two Android activities shown on one layout? - Stack Overflow


Also ich meinte natürlich Zeile :biggrin:
Die Liste wird ja im Sourcecode erzeugt und ja die XML ist für eine Zeile.
Und das Problem habe ich erst seit heute. Wollte heute ein Update für meine App veröffentlichen. Sprich die Frage ist nicht von mir.
 
kleinerkathe schrieb:
D.h. deine Activity erbt von ListActivity/ListFragment?
Dann musst du den Background vermutlich programmatisch setzen:
java - set a background for a listview - Stack Overflow


Deine App, aber nicht deine Frage? Hä? ;P


Ne ist auch nicht meine App.

Den Hintergrund im Sourcecoden zu setzten ist eine gute Idee. Auf diese bin ich nicht gekommen. Werde es gleich ausprobieren :thumbsup:
 
Nicht deine App aber du wolltest ein Updatet für die App veröffentlichen ? Häää xD ?
 
Greenstar schrieb:
Nicht deine App aber du wolltest ein Updatet für die App veröffentlichen ? Häää xD ?


Also nochmal. Ich habe vor ca. Einem halben Jahr eine App programmiert (Sensor Toolbox) und im Playstore veröffentlicht. Heute wollte ich ein Update für meine App veröffentlichen mit ein paar Neuerungen. Und der Code der hier steht ist ein Teil von meinem Update. Nur habe ich ja wie schon gesagt ein Problem (oben erläutert) und werde dieses Problem hoffentlich morgen beseitigen :biggrin:
 
Zurück
Oben Unten