probleme mit custom widget/Gallery

J

jim

Ambitioniertes Mitglied
0
Hallo liebes Forum,

ich habe mein Problem schon in einem englisch sprachigen Forum gepostet. Leider ohne Erfolg(oder mein englisch ist schlecht :-( )

Zu meinem Problem:
Ich habe mir ein Custom Widget zum ersten mal selber erstellt und habe nun Probleme Instanzen davon zu verändern. Mein Widget ist eine einfache Gallery mit links und rechts zwei Button.

Code:
<?xml version="1.0" encoding="utf-8"?>


<merge xmlns:android="http://schemas.android.com/apk/res/android">       
    <ImageButton android:id="@+id/toLeft"
    android:background="@drawable/arrow_left"
        android:layout_width="wrap_content"
        android:layout_height="40dip"
        android:layout_marginBottom="1dip" />
    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="40dip"
        android:layout_toRightOf="@+id/toLeft"
        android:spacing="40dip"
        android:scrollbars="horizontal"/>

    <ImageButton android:id="@+id/toRight"
        android:background="@drawable/arrow_right"
        android:layout_width="wrap_content"
        android:layout_height="40dip" 
        android:layout_toRightOf="@+id/gallery" />
</merge>

Die dazughörige Klasse:

Code:
  public class GallerySlider extends RelativeLayout implements OnClickListener {
    private ArrayAdapter<String> adapter;
private Gallery gallery;
private ImageButton toLeftBtn = null;
private ImageButton toRightbtn = null;

public GallerySlider(Context context) {
     super(context, null);   
     init(context);
}

public GallerySlider(Context context, AttributeSet attrs) {
     super(context, attrs);
     init(context);
}

public GallerySlider(Context context, AttributeSet attrs, int defStyle) {
     super(context, attrs);
     init(context);
}

public void init(Context ctx){
    LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
    inflater.inflate(R.layout.customGallery, this, true);

    toLeftBtn = (ImageButton) findViewById(R.id.toLeft);
    toLeftBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if(gallery.getSelectedItemPosition() > 0){
                gallery.setSelection(gallery.getSelectedItemPosition()-1);
            }
        }

    });

    toRightbtn = (ImageButton) findViewById(R.id.toRight);
    toRightbtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(gallery.getSelectedItemPosition() < gallery.getAdapter().getCount()-1){
                gallery.setSelection(gallery.getSelectedItemPosition()+1);
            }
        }

    });
    adapter = new ArrayAdapter<String>(ctx, android.R.layout.simple_gallery_item, new String[] {"1","1",
                                                                                                    "1")});
    gallery = (Gallery) findViewById(R.id.gallery);
    gallery.setBackgroundResource(R.drawable.h_sliderl);
    gallery.setAdapter(adapter);
}



@Override
public void onClick(DialogInterface dialog, int which) {

    switch(which){
    case R.id.toLeft:   gallery.setSelection(gallery.getFocusedChild().getId()-1);
                        break;

    case R.id.toRight:  gallery.setSelection(gallery.getFocusedChild().getId()+1);
                        break;
    }

}


public void setNewAdapter(ArrayAdapter<String> _adapter){

        gallery.setAdapter(_adapter);
        ((ArrayAdapter) gallery.getAdapter()).notifyDataSetChanged ();
}


Ziel ist es jetzt mehrer Instanzen von dem Widget zu verwenden, ich habe ein kleines Beispiel probiert und leider kann ich wie gesagt keine Eigenschaften des Widgets nach dem instanziieren verändern und ich sehe das Problem nicht(es kommt auch keine Error...).

Der Code meines Minimalbsp.:
Code:
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout lineLayout = (LinearLayout) findViewById(R.id.lin_layout);
    ViewStub st3 = new ViewStub(TestwidgetActivity.this);
    LinearLayout.LayoutParams paramst3 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    lineLayout.addView(st3,paramst3);
    st3.setLayoutResource(R.layout.test);
    st3.inflate();
    GallerySlider gSlider= (GallerySlider) View.findViewById(R.id.choose);
    gSlider.setNewAdapter( new ArrayAdapter<String>(this, android.R.layout.customGallery, new String[] {"1 ","2","3","4"}));
}

Hier die dazugehörige layout xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lin_layout"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

 <com.Test.GallerySlider
     android:id="@+id/choose"
     android:layout_span="2"
     android:layout_width="300dip"
     android:layout_height="wrap_content"    />

</LinearLayout>


In der Gallery müssten eigentlich die Zahlen 1,2,3,4 später angezeigt werden.. leider sind nur die Werte , welche ich beim instanziieren benutze, vorhanden. Ich finde den Fehler leider nicht.. . Log lohnt sich nicht da nichts drin steht und kein Fehler geworfen wird... . Hat Jemand eine Idee?
LG Jim
 

Ähnliche Themen

S
Antworten
4
Aufrufe
954
Sempervivum
S
R
Antworten
3
Aufrufe
1.571
Ritartet
R
wernho
Antworten
11
Aufrufe
599
wernho
wernho
Zurück
Oben Unten