Foro de elhacker.net

Programación => Java => Mensaje iniciado por: LaThortilla (Effort) en 14 Mayo 2014, 14:47 pm



Título: Problema Android (SchrolView Control personalizado)
Publicado por: LaThortilla (Effort) en 14 Mayo 2014, 14:47 pm
Buenos dias..

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
  1. package binario.thinki;
  2.  
  3.  
  4. import binario.thinki.avatars.AdapterHgallery;
  5. import binario.thinki.avatars.ZeroChildException;
  6.  
  7. import android.app.Activity;
  8. import android.content.Context;
  9. import android.graphics.Color;
  10. import android.util.AttributeSet;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.HorizontalScrollView;
  14. import android.widget.LinearLayout;
  15.  
  16.  
  17. public class Hgalery  extends HorizontalScrollView {
  18. Activity context;
  19.    int prevIndex = 0;
  20.  
  21. public Hgalery(Context context, AttributeSet attrs, Activity Context) {
  22. super(context, attrs);
  23. // TODO Auto-generated constructor stub
  24. this.context =  (Activity) context;
  25.     this.setSmoothScrollingEnabled(true);
  26. }
  27.  
  28.   public Hgalery(Activity context, AttributeSet attrs) {
  29.       super(context, attrs);
  30.        this.context = context;
  31.        this.setSmoothScrollingEnabled(true);
  32.    }
  33.  
  34.    public void setAdapter(Context context, AdapterHgallery mAdapter) {
  35.  
  36.        try {
  37.            fillViewWithAdapter(mAdapter);
  38.        } catch (ZeroChildException e) {
  39.  
  40.            e.printStackTrace();
  41.        }
  42.    }
  43.  
  44.  
  45.    private void fillViewWithAdapter(AdapterHgallery mAdapter)
  46.            throws ZeroChildException {
  47.        if (getChildCount() == 0) {
  48.            throw new ZeroChildException(
  49.                    "CenterLockHorizontalScrollView must have one child");
  50.        }
  51.        if (getChildCount() == 0 || mAdapter == null)
  52.            return;
  53.  
  54.        ViewGroup parent = (ViewGroup) getChildAt(0);
  55.  
  56.        parent.removeAllViews();
  57.  
  58.        for (int i = 0; i < mAdapter.getCount(); i++) {
  59.            parent.addView(mAdapter.getView(i, null, parent));
  60.        }
  61.    }
  62.  
  63.    @SuppressWarnings("deprecation")
  64. public void setCenter(int index) {
  65.  
  66.        ViewGroup parent = (ViewGroup) getChildAt(0);
  67.  
  68.        View preView = parent.getChildAt(prevIndex);
  69.        preView.setBackgroundColor(Color.parseColor("#64CBD8"));
  70.        android.widget.LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
  71.                LinearLayout.LayoutParams.WRAP_CONTENT,
  72.                LinearLayout.LayoutParams.WRAP_CONTENT);
  73.        lp.setMargins(5, 5, 5, 5);
  74.        preView.setLayoutParams(lp);
  75.  
  76.        View view = parent.getChildAt(index);
  77.        view.setBackgroundColor(Color.RED);
  78.  
  79. int screenWidth = context.getWindowManager().getDefaultDisplay().getWidth();
  80.  
  81.        int scrollX = (view.getLeft() - (screenWidth / 2))
  82.                + (view.getWidth() / 2);
  83.        this.smoothScrollTo(scrollX, 0);
  84.        prevIndex = index;
  85.    }
  86.  
  87. }
  88.  


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
  1. package binario.thinki.roomitems;
  2.  
  3.  
  4. import java.util.List;
  5.  
  6.  
  7.  
  8. import android.app.Activity;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.view.View.OnClickListener;
  12. import android.widget.BaseAdapter;
  13.  
  14.  
  15. public class AdapterItemRoom extends BaseAdapter{
  16.  
  17. Activity _Activity;
  18. List<ItemRoom> Rooms;
  19. private OnClickListener Listener;
  20.    public AdapterItemRoom(Activity _Activity,List<ItemRoom> Rooms, OnClickListener Listener){
  21. this._Activity = _Activity;
  22. this.Rooms = Rooms;
  23. this.Listener =Listener;
  24. }
  25.  
  26. public int getCount() {
  27. return Rooms.size();
  28. }
  29.  
  30. @Override
  31. public Object getItem(int position) {
  32. return Rooms.get(position);
  33. }
  34.  
  35. @Override
  36. public long getItemId(int position) {
  37. // TODO Auto-generated method stub
  38. return 0;
  39. }
  40.  
  41.  
  42. public View getView(int position, View arg1, ViewGroup arg2) {
  43. ListItemRooms lsRooms = new ListItemRooms(_Activity,Rooms.get(position), Listener);
  44. return lsRooms;
  45. }
  46.  
  47. }
  48.  
  49.  

De antemano muchas gracias.

(si me corriges te lo agradeceré)


Título: Re: Problema Android (SchrolView Control personalizado)
Publicado por: LaThortilla (Effort) en 19 Mayo 2014, 00:36 am
jajaj pensé que seria mas rápido.....