2012-01-11 4 views
-1

je travaille sur une application Android qui doit montrer une liste [tableau], dans la mise en page [vue]liste android dans la mise en page

Je viens de la terre iPhone dev objc, et j'ai une application qui montre une table [liste] dans la vue [layout]

list/table

Alors, comment afficher une liste dans ma mise en page, et placez-le à l'emplacement spécifié [centre],

ps. Je n'ai pas trouvé de liste dans l'éditeur graphique du xml, où est la liste [table]? 2. J'ai fait quelques tests avec des vues de liste, mais c'est une vue, qui remplace la vue xml, je la veux dans mon xml ,,

merci beaucoup!

+0

ce que tu veux que nous fassions exactement? mise en page de conception pour vous ???? – Richa

+0

@Richa, non ce n'est pas mon but, je veux savoir si est possible de mettre une liste dans une mise en page [avec d'autres éléments], et ne pas avoir la liste occuper l'écran du trou – MaKo

+0

@mako ya son très possible de mettre une liste à l'intérieur d'une mise en page fait simplement de la hauteur de la liste un contenu d'habillage et la mise en page parente dans laquelle la liste est doit avoir un défilement désactivé. – Nitin

Répondre

4

Oui, bien sûr, vous pouvez le faire

1) vous devez avoir listholder.xml ici, vous pouvez rayer tout en vous vue la mise en page, soit imageview, textview..etc. n'oubliez pas d'ajouter ListView à l'intérieur. par exemple:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/head_logo_bg"> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_label"> 
    <TextView 
     android:id="@+id/city_txt" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:layout_gravity="center" 
     android:text="Sydney" 
     android:textStyle="bold" 
     android:textSize="17sp"/> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="40sp"> 

    <ListView 
    android:id="@android:id/list" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:layout_centerVertical="true" 
    android:scrollingCache="false"/> 
</LinearLayout> 

2) Pour personnaliser votre propre élément de la liste, vous devez créer listitem.xml-à-dire

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listitemone" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="10sp"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:orientation="vertical"> 
      <ImageView android:id="@+id/user_image" 
       android:layout_width="80px" android:layout_height="80px" 
       android:layout_alignParentLeft="true" 
       android:layout_marginRight="5px" 
       android:src="@drawable/icon" 
       /> 
    </LinearLayout> 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginLeft="5sp" 
     android:orientation="vertical"> 
      <TextView 
       android:id="@+id/date_label" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/date" 
       android:textStyle="bold" 
      android:textSize="16sp" /> 
      <TextView 
       android:id="@+id/date_value" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_alignBaseline="@id/date_label" 
       android:layout_marginRight="20sp" 
       android:textColor="#FFF" 
       android:text="MM/dd/YYYY" 
       android:textStyle="bold" 
      android:textSize="16sp" /> 
     </RelativeLayout> 
</LinerLayout> 

3) créer customAdapter dans votre activité, il ressemblerait à ceci;

public class MyListActivity extends ListActivity { 

private ArrayList<Yourdata> yourdata = new ArrayList<Youdata>(); 
     @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.listholder);  
       // yourdata might be array, arraylist etc. 

       MyCustomAdapter listadapter = new MyCustomAdapter(this, R.layout.listitem, yourdata); 

      setListAdapter(listadapter); 
} 

private class MyCustomAdapter extends ArrayAdapter<Yourdata>{ 
       //this case, i use Yourdata as type 
     private ArrayList<Yourdata> items; 

     public PreviousAdapter(Context context, int textViewResourceId, 
       ArrayList<Yourdata> items) { 
      super(context, textViewResourceId, items); 
      this.items = items; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View v = convertView; 
      if(v == null) { 
       LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.listitem, null); 
      } 
      Yourdata yt = items.get(position); 
      if(yt != null){ 
      // Don't forget to use v.findView...., otherwise, it might force close when run app. 
       TextView dateStr = (TextView)v.findViewById(R.id.date_value); 

        dateStr.setText(yt.getDate()); 
      } 
      return v; 
     } 



     } 


} 

P.S. le code ci-dessus peut-être pas tout à fait exact ... vous donner une idée :) Voici une source à propos de la liste personnalisée (vous pourriez avoir vu) espérons utile

http://www.vogella.de/articles/AndroidListView/article.html