¿Puedo insertar una columna en listview en tiempo de ejecución?

Quiero hacer un listview se parece al control de datagrid en android.Todas las columnas se generan por code-behand que es dynamic.My fragmentos de código podría construir con éxito pero el listview no se muestra como esperaba.¿Qué está mal con él?

@Override public View getView(int position, View convertView, ViewGroup parentView) { ViewHolder holder = null; if (convertView == null) { synchronized (MainActivity.this) { convertView = mInflater.inflate(id_row_layout, null); holder = new ViewHolder(); //I had add an textView to the convertView,but it not show LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.rLayout); TextView tx = new TextView(context); tx.setText("ads"); layout.addView(tx); MyHScrollView scrollView1 = (MyHScrollView) convertView .findViewById(R.id.horizontalScrollView1); holder.scrollView = scrollView1; holder.txt1 = (TextView) convertView .findViewById(R.id.textView1); holder.txt2 = (TextView) convertView .findViewById(R.id.textView2); holder.txt3 = (TextView) convertView .findViewById(R.id.textView3); holder.txt4 = (TextView) convertView .findViewById(R.id.textView4); holder.txt5 = (TextView) convertView .findViewById(R.id.textView5); MyHScrollView headSrcrollView = (MyHScrollView) mHead .findViewById(R.id.horizontalScrollView1); headSrcrollView .AddOnScrollChangedListener(new OnScrollChangedListenerImp( scrollView1)); convertView.setTag(holder); mHolderList.add(holder); } } else { holder = (ViewHolder) convertView.getTag(); } holder.txt1.setText(position + "" + 1); holder.txt2.setText(position + "" + 2); holder.txt3.setText(position + "" + 3); holder.txt4.setText(position + "" + 4); holder.txt5.setText(position + "" + 5); return convertView; } 

4 Solutions collect form web for “¿Puedo insertar una columna en listview en tiempo de ejecución?”

 1) In your adapter with Arraylist override the appropriate constructor 2) In your activity, make your variable data a field (type ArrayList 3) When you add a location you can use data.add(location) 4) Then you can call notifyDatasetChanged() on your adapter 

Código de ejemplo: http://androidadapternotifiydatasetchanged.blogspot.in/

Funciona para mí en ApiDemos con texto extra;

 public class List14 extends ListActivity { private static class EfficientAdapter extends BaseAdapter { private LayoutInflater mInflater; private Bitmap mIcon1; private Bitmap mIcon2; private Context context; public EfficientAdapter(Context context) { // Cache the LayoutInflate to avoid asking for a new one each time. mInflater = LayoutInflater.from(context); this.context = context; // Icons bound to the rows. mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_1); mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon48x48_2); } /** * The number of items in the list is determined by the number of speeches * in our array. * * @see android.widget.ListAdapter#getCount() */ public int getCount() { return DATA.length; } /** * Since the data comes from an array, just returning the index is * sufficent to get at the data. If we were using a more complex data * structure, we would return whatever object represents one row in the * list. * * @see android.widget.ListAdapter#getItem(int) */ public Object getItem(int position) { return position; } /** * Use the array index as a unique id. * * @see android.widget.ListAdapter#getItemId(int) */ public long getItemId(int position) { return position; } /** * Make a view to hold each row. * * @see android.widget.ListAdapter#getView(int, android.view.View, * android.view.ViewGroup) */ public View getView(int position, View convertView, ViewGroup parent) { // A ViewHolder keeps references to children views to avoid unneccessary calls // to findViewById() on each row. ViewHolder holder; // When convertView is not null, we can reuse it directly, there is no need // to reinflate it. We only inflate a new View when the convertView supplied // by ListView is null. if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); // Creates a ViewHolder and store references to the two children views // we want to bind data to. holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.layout); TextView child = new TextView(context); child.setText("CHILD"); layout.addView(child); convertView.setTag(holder); } else { // Get the ViewHolder back to get fast access to the TextView // and the ImageView. holder = (ViewHolder) convertView.getTag(); } // Bind the data efficiently with the holder. holder.text.setText(DATA[position]); holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); return convertView; } static class ViewHolder { TextView text; ImageView icon; } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new EfficientAdapter(this)); } private static final String[] DATA = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", }; } 

Introduzca aquí la descripción de la imagen

Compruebe el holder estático y los layouts .

Es fácil tener una columna extra, sólo mostrar y ocultar un elemento para una posición seleccionada. Tienes que ocultarlos una vez que el elemento no se muestre.

De hecho, también puede inflar un RelativeLayout de su adaptador, pero esto tal vez será más difícil de lograr.

Espero que ayude

SI su disposición del archivo de la fila será igual para cada fila entonces

Usted puede apenas agregar el número del artículo (en otras palabras su columna)

A su ArrayList (que es responsable de llenar el adapter listview ) y acaba de llamar a notifydatasetchanged(true) o adapter.notifyDataSetChanged()

  • Obtener posición en ListView
  • Seleccionar todos los elementos de ListView
  • Android: Actualizar ListView después de que Thread carga los datos desde la red
  • Para un adaptador ListView, ¿cómo se llama getView ()?
  • Crash en ListView en AbsListView.obtainView para ListActivity
  • Diferencia entre CHOICE_MODE_MULTIPLE y CHOICE_MODE_MULTIPLE_MODAL?
  • ¿Por qué mi ListView no muestra nada?
  • Android ListView en Actividad que se refresca en el cambio de orientación
  • Posición ListView onStart
  • ¿Cuál es la diferencia entre los dos tipos de implementación de la getView ()?
  • Obtener el elemento seleccionado mediante la casilla de verificación en ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.