2010-04-06 6 views
1

J'essaie de recréer l'écran de l'interface utilisateur appelé «Mes lieux» qui est utilisé dans l'application Weather Channel. Je voudrais joindre une capture d'écran de l'écran, mais je ne peux pas sembler le faire ici. Il semble qu'ils utilisent deux listes de lecture les unes sur les autres, mais je n'en suis pas certain. Quelqu'un pourrait-il confirmer cela pour moi? S'ils font cela, comment cela se fait-il? J'ai essayé de l'implémenter, mais sans succès. Mon top listview 'Ajouter une place' s'affiche correctement, mais la liste du bas n'apparaîtra pas/ne s'affichera pas pour moi? Je vais joindre mon code jusqu'ici ......UI android question/problème avec Listview

Toute aide serait grandement appréciée.

header_row.xml

<?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"> 
ImageView 
android:id="@+id/icon" 
android:layout_width="wrap_content" 
android:layout_height="fill_parent" 
android:layout_marginRight="6dip" 
android:src="@drawable/ic_menu_add" /> 
LinearLayout 
android:orientation="vertical" 
android:layout_width="0dip" 
android:layout_weight="1" 
android:layout_height="fill_parent"> 
TextView 
android:id="@+id/caption" 
android:layout_width="fill_parent" 
android:layout_height="0dip" 
android:layout_weight="1" 
android:gravity="center_vertical" 
android:text="Add a place"/> 
/LinearLayout> 
/LinearLayout> 

main.xml

?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="?android:attr/listPreferredItemHeight" 
android:padding="6dip"> 
ListView 
android:id="@+id/header" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 
LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 
ListView 
android:id="@+id/list" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"/> 
/LinearLayout> 
/LinearLayout> 

public class ListViewTest extends Activity 
{ 
private static String[] items={"lorem", "ipsum", "dolor", 
"sit", "amet", "consectetuer", 
"adipiscing", "elit", "morbi", 
"vel", "ligula", "vitae", 
"arcu", "aliquet", "mollis", 
"etiam", "vel", "erat", 
"placerat", "ante", 
"porttitor", "sodales", 
"pellentesque", "augue", 
"purus"}; 

private ListView Header; 
private ListView List; 
private ArrayList<Caption> caption = null; 
private CaptionAdapter adapter; 
private ArrayAdapter listAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

caption = new ArrayList<Caption>(); 
Caption cap = new Caption(); 
cap.setCaption("Add a place"); 
caption.add(cap); 

this.adapter = new CaptionAdapter(this, R.layout.header_row, caption); 

Header = (ListView) findViewById(R.id.header); 

Header.setAdapter(adapter); 

//Log.d("ListViewTest", "caption size is:" + caption.size()); 

adapter.notifyDataSetChanged(); 

List = (ListView) findViewById(R.id.list); 

listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 

List.setAdapter(listAdapter); 

listAdapter.notifyDataSetChanged(); 

//setListAdapter(new ArrayAdapter<String>(this, 
//android.R.layout.simple_list_item_1, 
//items)); 
} 

private class CaptionAdapter extends ArrayAdapter<Caption> 
{ 
private ArrayList<Caption> caption; 

public CaptionAdapter(Context context, int textViewResourceId, ArrayList<Caption> caption) 
{ 
super(context, textViewResourceId, caption); 
this.caption = caption; 
} 

@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.header_row, null); 
} 

Caption c = caption.get(position); 

if (c != null) 
{ 
TextView caption = (TextView) v.findViewById(R.id.caption); 

if (caption != null) 
{ 
caption.setText(c.getCaption()); 
} 
} 

return v; 
} 

} 
} 

Répondre

0

Je ne pense pas que la page est deux listviews du tout. Plus quelque chose comme ça:

<LinearLayout android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <Button android:id="@+id/add_a_place" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 

     <ImageView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/weather_logo" /> 
    </LinearLayout> 

    <ListView android:id="@+id/somelist" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 
</LinearLayout> 

Je me sens comme si quelque chose me manquait, cependant. Je ne vois rien sur cette page indiquant qu'il pourrait s'agir de deux ListViews, donc je me demande si cela vous semble différent.