Primero que todo quiero saludarlos. Tengo ya un tiempo desde que no posteo algo, creo que he avanzado mucho desde entonces y espero poder colaborar algo con el foro.
Bueno Recién comienzo con android y me he encontrado con una pequeña dificultad que agradecería me orientaran un poco...
he creado un control personalizado que extiende de la clase HorizontalScrollView y he sobre escrito algunos metodos bueno aqui les dejo la clase:
Código
package binario.thinki; import binario.thinki.avatars.AdapterHgallery; import binario.thinki.avatars.ZeroChildException; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; public class Hgalery extends HorizontalScrollView { Activity context; int prevIndex = 0; super(context, attrs); // TODO Auto-generated constructor stub this.context = (Activity) context; this.setSmoothScrollingEnabled(true); } super(context, attrs); this.context = context; this.setSmoothScrollingEnabled(true); } try { fillViewWithAdapter(mAdapter); } catch (ZeroChildException e) { e.printStackTrace(); } } private void fillViewWithAdapter(AdapterHgallery mAdapter) throws ZeroChildException { if (getChildCount() == 0) { throw new ZeroChildException( "CenterLockHorizontalScrollView must have one child"); } if (getChildCount() == 0 || mAdapter == null) return; ViewGroup parent = (ViewGroup) getChildAt(0); parent.removeAllViews(); for (int i = 0; i < mAdapter.getCount(); i++) { parent.addView(mAdapter.getView(i, null, parent)); } } @SuppressWarnings("deprecation") public void setCenter(int index) { ViewGroup parent = (ViewGroup) getChildAt(0); android.widget.LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.setMargins(5, 5, 5, 5); preView.setLayoutParams(lp); int screenWidth = context.getWindowManager().getDefaultDisplay().getWidth(); int scrollX = (view.getLeft() - (screenWidth / 2)) + (view.getWidth() / 2); this.smoothScrollTo(scrollX, 0); prevIndex = index; } }
No estoy muy seguro pero creo que existen 2 formas de instanciarla en el activity principal.
1. mediante xml (esta estoy seguro que se puede) pero por alguna razon me genera un error, tengo poca experiencia depurando errores en android y no logro dar con el. solo no inicia la activity (tengo que leer un poco sobre esto).
2. mediante codigo java pero no se como ( he buscando en google pero no logro dar con este) dado que solo aparecen ejemplos de inflar layouts (xml) y no desde una clase java...
Bueno aqui os dejo el codigo del adapter que ocupa la clase:
Código
package binario.thinki.roomitems; import java.util.List; import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.BaseAdapter; public class AdapterItemRoom extends BaseAdapter{ Activity _Activity; List<ItemRoom> Rooms; private OnClickListener Listener; public AdapterItemRoom(Activity _Activity,List<ItemRoom> Rooms, OnClickListener Listener){ this._Activity = _Activity; this.Rooms = Rooms; this.Listener =Listener; } public int getCount() { return Rooms.size(); } @Override return Rooms.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } ListItemRooms lsRooms = new ListItemRooms(_Activity,Rooms.get(position), Listener); return lsRooms; } }
De antemano muchas gracias.
(si me corriges te lo agradeceré)