PDA

Ver la Versión Completa : Algo no cuadra en mi ListView


mscdroid
18/02/13, 01:10:20
Buenas! Tengo un pequeño problemilla a la hora de añadir elementos a un ListView, en el codigo la idea llenar un ListView con las aplicaciones instaladas en el dispositivo. Lo bueno, es que en el logcat me las lista todas, en cambio en el listview me sale un unico elemento llamado "android".


public class Inicial extends Activity {

private ListView elementos;
private ArrayList<String> listItems;
private ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inicial);
elementos = (ListView)findViewById(R.id.elementos);

listItems=new ArrayList<String>();

adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);

elementos.setAdapter(adapter);


final PackageManager packageManager = getPackageManager();
List<ApplicationInfo> installedApplications =
packageManager.getInstalledApplications(PackageMan ager.GET_META_DATA);

for (ApplicationInfo appInfo : installedApplications)
{
Log.d("APM", "Package name : " + appInfo.packageName);
Log.d("APM", "Name: " + appInfo.loadLabel(packageManager));
listItems.add("Package : "+appInfo.packageName);
adapter.notifyDataSetChanged();

}
}
A ver si alguien ve el fallo....

Gracias!

mscdroid
18/02/13, 01:23:05
Solucionado! Habia un conflicto en el xml del layout, entre el ListView y un ScrollView. El codigo funciona!

kriogeN
18/02/13, 01:25:28
Quita listItems.

Cambia esto:

adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);

Por esto:

adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);

Y cambia esto:
listItems.add("Package : "+appInfo.packageName);

Por esto:

adapter.add("Package : "+appInfo.packageName);

Debería funcionar.

mscdroid
18/02/13, 01:30:37
Quita listItems.

Cambia esto:

adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);

Por esto:

adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);

Y cambia esto:
listItems.add("Package : "+appInfo.packageName);

Por esto:

adapter.add("Package : "+appInfo.packageName);

Debería funcionar.


Gracias por tu codigo! Lo tendre en cuenta para otras veces.

Arasthel
18/02/13, 11:12:10
Gracias por tu codigo! Lo tendre en cuenta para otras veces.

Aunque no creo que sea el caso ya que parece que lo has solucionado, el poner un ListView dentro de un layout con ScrollView hace que en el ListView se vea solo un elemento de la lista cada vez. Lo pongo por si a alguien le hace falta en un futuro.

Un saludo.

mscdroid
18/02/13, 23:31:43
Eso es, al parecer no se puede tener un elemento scrollable dentro de otro del mismo tipo, basto con sacar el ListView de dentro del ScrollView.

Un saludo!