Autore Topic: aprire ListView da bottone  (Letto 458 volte)

Offline InterDroid

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel onetouch 993d
  • Sistema operativo:
    Windows 8.1
aprire ListView da bottone
« il: 12 Marzo 2014, 18:56:42 CET »
0
Ciao a tutti,

ho il seguente problema:
Ho bisogno che da un'activity principale,attraverso l'ausilio di un bottone,si possa aprire una lista di elementi, ognuno dei quali a sua volta selezionabile.
Questo lo faccio attraverso il seguente codice,ma l'app si blocca e non capisco quale può essere l'errore.
grazie in anticipo.

AndroidManifest.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.eventi"
   android:versionCode="1"
   android:versionName="1.0" >

    <uses-sdk
       android:minSdkVersion="8"
       android:targetSdkVersion="14" />
   

    <application
       android:allowBackup="true"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >
        <activity
           android:name="com.example.eventi.MainActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity  android:name="com.example.eventi.simleLists"
                  android:label="@string/app_name" >
           
           
        </activity>
    </application>

</manifest>

activity_main.xml
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical">
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:layout_marginTop="30dp"
       android:textStyle="bold"
       android:text="Buongiorno"
       tools:context=".MainActivity" />
    <Button
       android:id="@+id/Lista"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:layout_marginTop="10dp"
       android:text="Lista"
       android:textAppearance="?android:attr/textAppearanceMedium" />


</LinearLayout>

list.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
    <ListView android:id="@+id/listview1"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>
       

</LinearLayout>

MainActivity.java
Codice (Java): [Seleziona]
public class MainActivity extends Activity {
        private Button button;
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
       
        //Getting View
        button = (Button)findViewById(R.id.Lista);

       
        button.setOnClickListener(new View.OnClickListener() {
                   
                   @Override
                   public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i = new Intent(getApplicationContext(), simleLists.class);
                    startActivity(i);
                   
                   }
                  });

simleLists.java
Codice (Java): [Seleziona]
package com.example.eventi;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class simleLists extends ListActivity{
        @Override
         protected void onCreate(Bundle savedInstanceState) {
          // TODO Auto-generated method stub
          super.onCreate(savedInstanceState);
          setContentView(R.layout.list);        
         
         
           String data [] = {"1", "2","3","4","5","6"};
           ListView list1 = (ListView)this.findViewById(R.id.listview1);
           ArrayAdapter adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,data);
           list1.setAdapter(adapter);  
         
         }
       
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
         // TODO Auto-generated method stub
         super.onListItemClick(l, v, position, id);
         String item = (String) getListAdapter().getItem(position);
         Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
        }
}

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:aprire ListView da bottone
« Risposta #1 il: 12 Marzo 2014, 19:10:02 CET »
+1
devi postare il logcat
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline InterDroid

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel onetouch 993d
  • Sistema operativo:
    Windows 8.1
Re:aprire ListView da bottone
« Risposta #2 il: 12 Marzo 2014, 19:20:36 CET »
0
Non sono molto pratico, ma il LogCat non sembra mi dia errori, semplicemente l'app va in crash.
Da debug ho notato che il crash avviene appena viene eseguita la riga di codice:

intent i .........
startActivity(i);

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:aprire ListView da bottone
« Risposta #3 il: 13 Marzo 2014, 07:30:23 CET »
+1
Se l'applicazione va in crash ci deve essere necessariamente qualche evento che lo provoca e se così fosse é visibile nel logcat. Il codice che hai postato non contiene errori, tantomeno nella porzione di codice che citi.

P. S. Giusto per annotazione, nelle ListActivity per ottenere il riferimento alla lista puoi anche usare il metodo getListView().

Inviato dal mio Galaxy Nexus con Tapatalk 2

SimoneDev @ Google Play Store

Offline InterDroid

  • Nuovo arrivato
  • *
  • Post: 17
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Alcatel onetouch 993d
  • Sistema operativo:
    Windows 8.1
Re:aprire ListView da bottone
« Risposta #4 il: 13 Marzo 2014, 09:14:20 CET »
0
Ho risolto,grazie comunque.
Ho cercato di analizzare il logCat come mi avevate detto e il problema stava nel fatto di come costruivo il file list.xml che ho modificato in questa maniera:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"
>
</ListView>

ho eliminato poi la riga di codice

Codice (Java): [Seleziona]
ListView list1 = (ListView)this.findViewById(R.id.listview1); e modificato la successiva in
Codice (Java): [Seleziona]
setListAdapter(adapter);
Post unito: 13 Marzo 2014, 10:09:37 CET
Se volessi aggiungere un altro bottone, alla pressione del quale si deve aprire la stessa listView ma con un adapter differente(es. a,b,c,d,e, al posto di 1,2,3,4,5,6)  come potrei fare? Vorrei utilizzare se possibile la stessa classe simleLists, semplicemente con due adapter differenti . grazie
« Ultima modifica: 13 Marzo 2014, 10:09:37 CET da InterDroid, Reason: Merged DoublePost »