2010-03-19 8 views
3

J'utilise List View dans mon projet où j'ai utilisé un fichier xml qui est utilisé pour créer l'élément de la liste. Ensuite, je l'ai utilisé par programmation dans ma classe qui est étendue par ListActivity. Mais le problème est que je dois ajouter un bouton en bas de l'écran qui n'est pas lié à la vue liste, mais la vue Liste couvre tout l'écran. Donc, est-il possible d'ajouter un bouton en bas avec vue de liste dans Android.Set List View Taille Android

Mon code est le suivant: -

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 

public class Options extends ListActivity { 
    String[] items; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     requestWindowFeature(Window.FEATURE_RIGHT_ICON); 

     items = getResources().getStringArray(R.array.chantOption_array); 
     setListAdapter(new IconicAdapter()); 
     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 
     lv.setBackgroundResource(R.drawable.ichant_logo); 
     setFeatureDrawableResource(Window.FEATURE_RIGHT_ICON, R.drawable.icon_t); 


     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // When clicked, show a toast with the TextView text 

       Toast.makeText(getApplicationContext(), 
         items[position], Toast.LENGTH_SHORT).show(); 


       if ("Gayatri Mantra".equals(items[position].toString())) { 
        int[] timeintervals = { 23900, 24000 }; 
        // startChantActivity(TotalMala_loop,Total_Bead_Loop,BacgroundImage,Icon,Title,BeadsTotalTimeIntervals+totalTimeDurationOfAudio) 
        startChantActivity(2, 108, R.drawable.gayatri, 
          R.raw.gayatri, R.drawable.icon_gayatri, 
          "Gayatri Mantra", timeintervals); 
       } 
       if ("Om Mani Padme Hum".equals(items[position].toString())) { 
        int[] timeintervals = { 5500, 8200, 11100, 13900, 34100, 
          36700, 39500, 42300, 59300, 62000, 64800, 67600, 
          124600 }; 

        // startChantActivity(TotalMala_loop,Total_Bead_Loop,BacgroundImage,Icon,Title,BeadsTotalTimeIntervals+totalTimeDurationOfAudio) 

        startChantActivity(2, 108, R.drawable.ommanipadmehum, 
          R.raw.om_mani, R.drawable.icon_padme, 
          "Om Mani Padme Hum", timeintervals); 

       } 
       if ("Sai Ram".equals(items[position].toString())) { 

        // Audio time interval for bead+total time duration of audio 
        int[] timeintervals = { 4800, 7500, 10400, 12600, 15800, 
          18600, 21600, 24400, 25000 }; 
        // startChantActivity(TotalMala_loop,Total_Bead_Loop,BacgroundImage,Icon,Title,BeadsTotalTimeIntervals+totalTimeDurationOfAudio) 
        startChantActivity(2, 108, R.drawable.sairam, R.raw.sairam, 
          R.drawable.icon_sairam, "Sai Ram", timeintervals); 
       } 
       if ("Aum".equals(items[position].toString())) { 
        // Audio time interval for bead+total time duration of audio 
        int[] timeintervals = { 12850, 13000 }; 

        // startChantActivity(TotalMala_loop,Total_Bead_Loop,BacgroundImage,Icon,Title,BeadsTotalTimeIntervals+totalTimeDurationOfAudio) 

        startChantActivity(2, 108, R.drawable.aum, R.raw.aum, 
          R.drawable.ico_aum, "Aum", timeintervals); 
       } 





      } 
     }); 

    } 



    class IconicAdapter extends ArrayAdapter { 
     IconicAdapter() { 
      super(Options.this, R.layout.list_item, items); 

     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      LayoutInflater inflater = getLayoutInflater(); 
      View row = inflater.inflate(R.layout.list_item, parent, false); 
      TextView label = (TextView) row.findViewById(R.id.label); 
      label.setText(" "+items[position]); 
      ImageView icon = (ImageView) row.findViewById(R.id.icon); 
      if (items[position].equals("Gayatri Mantra")) { 
       icon.setImageResource(R.drawable.icon_gayatri); 
      } 
      if (items[position].equals("Om Mani Padme Hum")) { 
       icon.setImageResource(R.drawable.icon_padme); 
      } 
      if (items[position].equals("Sai Ram")) { 
       icon.setImageResource(R.drawable.icon_sairam); 
      } 
      if (items[position].equals("Aum")) { 
       icon.setImageResource(R.drawable.ico_aum); 
      } 
      return (row); 
     } 
    } 


    protected void startChantActivity(int mala_loop, int beads_loop, 
      int background, int media, int titleIcon, String title, 
      int[] timeintervals) { 

     Bundle bundle = new Bundle(); 
     bundle.putInt("mala_loop", mala_loop); 
     bundle.putInt("beads_loop", beads_loop); 
     bundle.putInt("background", background); 
     bundle.putInt("media", media); 
     bundle.putInt("titleIcon", titleIcon); 
     bundle.putString("title", title); 
     bundle.putIntArray("intervals", timeintervals); 
     Intent intent = new Intent(this, ChantBliss.class); 
     intent.putExtras(bundle); 
     startActivityForResult(intent, this.getSelectedItemPosition()); 

    } 
} 

et le fichier correspondant xml est:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
> 
<ImageView 
android:id="@+id/icon" 
android:layout_width="wrap_content" 
android:paddingLeft="2px" 
android:paddingRight="2px" 
android:paddingTop="2px" 
android:layout_height="wrap_content" 

/> 
<TextView 
android:id="@+id/label" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textSize="22sp" 
android:textColor="#ff000000" 

/> 
</LinearLayout> 

Merci à l'avance: Sandeep

Répondre

3

Quelque chose comme ça a fait l'affaire pour moi:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

<ListView android:id="@+id/list" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:drawSelectorOnTop="false"/> 

<LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 
     <EditText 
      android:id="@+id/newfilter" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:hint="Add a filter" 

      /> 
     <Button 
      android:id="@+id/addit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="fill_horizontal" 
      android:drawableLeft="@drawable/btn_plus_pressed" 
      /> 
    </LinearLayout>    
</LinearLayout> 
+0

Merci LucaB, J'utilise l'image aussi à mon avis la liste et que je dois créer une classe d'adaptateur coustomized où Je passe le fichier xml. Donc, je pense que ce n'est pas utile pour moi. S'il vous plaît regarder le code et si vous avez une solution alors s'il vous plaît aidez-moi. – Sandeep

+0

Désolé mais je n'ai pas eu le problème. Mon fichier XML pourrait également être transmis à l'adaptateur. – lbedogni

1

android:gravity="bottom|right"

De: http://code.google.com/p/k9mail/source/browse/k9mail/trunk/res/layout/account_setup_basics.xml?r=1314

<RelativeLayout 
     android:layout_marginTop="-45dip" 
     android:padding="0dip" 
     android:layout_alignParentBottom="true" 
     android:gravity="bottom|right" 
     android:background="@android:drawable/bottom_bar" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent"> 
     <Button 
      android:id="@+id/manual_setup" 
      android:text="@string/account_setup_basics_manual_setup_action" 
      android:minWidth="@dimen/button_minWidth" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_marginBottom="-4dip" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="false" 
      /> 
     <Button 
      android:id="@+id/next" 
      android:text="@string/next_action" 
      android:minWidth="@dimen/button_minWidth" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:drawableRight="@drawable/button_indicator_next" 
      android:layout_marginBottom="-4dip" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="false" 
      /> 
    </RelativeLayout> 

EDIT

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"> 
<ListView ............... /> 
<!-- then my RelativeLayout --> 
<RelativeLayout .............. /> 
</LinearLayout> 
+0

Merci Pentium, J'utilise l'image aussi dans ma vue de liste et que je dois créer une classe d'adaptateur coustomized où je passe le dossier de xml. Ainsi, je pense que ceci n'est pas utile pour moi. S'il vous plaît regarder le code et si vous avez une solution alors s'il vous plaît aidez-moi. – Sandeep

+0

Cela n'a rien à voir avec 'ListView' et/ou un' Adapter'. Cela va dans votre vue XML où vous référencez '@android: id/list' – Pentium10

+0

J'avais aussi ce problème. Je n'ai pas pensé à utiliser des marges pour le contourner. Merci! (Souhaite qu'il y avait une solution plus propre si) –