2010-09-15 14 views
11

Hola, soy nuevo en Android. Podría alguien decirme pls cuál es el mal con el siguiente código:Crear ListView programmatically

public class ListApp extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView lText = new TextView(this); 
     lText.setId(0);  

     ListView lView = new ListView(this); 
     String[] lStr = new String[]{"AA","BB", "CC"}; 
     ArrayAdapter lAdap = new ArrayAdapter(this,lText.getId(),lStr); 
     lView.setAdapter(lAdap); 
     lView.setFocusableInTouchMode(true);   

     setContentView(lView); 
    } 
} 
+0

por una razón, está utilizando el constructor ArrayAdapter incorrectamente. desea utilizar la versión de dos parámetros: (Context context, int textViewResourceId) – moonlightcheese

+0

de esta manera: ArrayAdapter lAdap = new ArrayAdapter (this, lText.getId()); – moonlightcheese

Respuesta

0
public class ListApp extends ListActivity 
+0

¿Podría agregar actividad de formulario ListView? No quiero heredar de ListActiviy. ¿Es posible? – ashraf

+0

Tengo el mismo problema, portar un proyecto de iPhone y Blackberry y usar el XML de Android es un rediseño ... argh. Si es fácil crear estos procedimientos de forma procesal, la vida sería mucho más fácil y parece que debería ser posible, pero bueno, todavía soy nuevo en Android :) – sradforth

0

hacer un archivo XML diseño con su vista de lista y utilizar findViewById para establecer su adaptador después de establecer primero la vista de contenido a su disposición

3

Pruebe esto ...

Pegue el siguiente código en list_item.xml.

<?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:padding="10dp" 
    android:textSize="16sp" android:textColor="#ffffff" android:textStyle="bold" android:background="@drawable/border_cell"> 
</TextView> 

Aquí es la clase de actividad ....

public class UsersListActivity extends ListActivity{  
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState);   
      String[] statesList = {"listItem 1", "listItem 2", "listItem 3"}; 
      setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, 
        statesList)); 
      ListView lv = getListView(); 

      lv.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 


        Toast.makeText(getApplicationContext(), 
        "You selected : "+((TextView) view).getText(), Toast.LENGTH_SHORT).show(); 
    } 
      }); 

     } 

} 
1

La mejor práctica es separar vista (layout XML) y el controlador (actividad).

Si no quieres esto, tratar de poner

setContentView(lView); 

al comienzo de onCreate

18

he aquí una solución que no requiere que escriba cualquier diseños XML. utiliza diseños estándar de Android siempre que sea posible y no se necesita inflación:

Dialog dialog = new Dialog(this); 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Select Color Mode"); 

ListView modeList = new ListView(this); 
String[] stringArray = new String[] { "Bright Mode", "Normal Mode" }; 
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray); 
modeList.setAdapter(modeAdapter); 

builder.setView(modeList); 
dialog = builder.create(); 
+2

ignore las cosas del diálogo. usted puede adaptar esto para trabajar con una actividad de lista también. – moonlightcheese

+0

esto debería marcarse como la respuesta correcta –