I have a ListView activity and I want an EditText (and ultimately a button along with it) to display above it.
I believe my xml is fine, but for some reason the EditText is not displaying. The ListView takes up the entire screen :(
Here's what my XML looks like:
<?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"
>
<EditText
android:id="@+id/newitemtext"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:hint="@string/add_new_item"
android:maxLines="1"
/>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/inbox_no_items"
/>
</LinearLayout>
Any ideas?
Note: In the layout tab of the xml file in Eclipse, the EditText shows. When I run my application in the emulator, it does not.
Thank you for your time
Update:
Here is where I set the content view in my onCreate method
m_aryNewListItems = new ArrayList<MyListItem>();
m_Adapter = new MyListAdapter(this, R.layout.layout_list, m_aryNewListItems);
setListAdapter(m_Adapter);
Here is my extended ArrayAdapter:
private class MyListAdapter extends ArrayAdapter<MyListItem> {
// items in the list
private ArrayList<MyListItem> m_items;
// constructor
public MyListAdapter(Context context, int textViewResourceId, ArrayList<MyListItem> items) {
super(context, textViewResourceId, items);
this.m_items = items;
}
// get specific list item
public MyListItem getItem(int position) {
if (m_items.size() > position) {
return m_items.get(position);
}
else {
return null;
}
}
/*
* Update screen display
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// get the View for this list item
View v = conver开发者_StackOverflow社区tView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.layout_list_item, null);
}
// get the next MyListItem object
MyListItem lstItem = m_items.get(position);
// set up the list item
if (lstItem != null) {
TextView txtItem = (TextView) v.findViewById(R.id.list_itemname);
TextView txtQty = (TextView) v.findViewById(R.id.list_itemqty);
TextView txtPlace = (TextView) v.findViewById(R.id.list_place);
// set item text
if (txtItem != null) {
txtItem.setText(lstItem.getItemName());
}
// set qty text
String strQtyText = "Qty: ";
if (txtQty != null && lstItem.getItemQty() != -1) {
BigDecimal bd = new BigDecimal(lstItem.getItemQty());
strQtyText += bd.stripTrailingZeros().toString();
if(lstItem.getItemQtyUnitId() != -1) {
strQtyText += " " + lstItem.getItemQtyUnitTextAbbrev();
}
}
else {
strQtyText += "--";
}
txtQty.setText(strQtyText);
// set place text
if (txtPlace != null && lstItem.getPlaceName() != null) {
txtPlace.setText(lstItem.getPlaceName());
}
}
// return the created view
return v;
}
}
add a android:layout_weight="1"
to ListView xml
so, this thing:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="bottom"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText android:id="@+id/filter"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="textAutoComplete"
android:layout_weight="1"
/>
<Button android:id="@+id/sort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sort"
/>
<Button android:id="@+id/add_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_all"
/>
<Button android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
/>
</LinearLayout>
<GridView android:id="@+id/myGrid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:verticalSpacing="15dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="60dp"
android:gravity="center"
/>
</LinearLayout>
produces this:
精彩评论