在列表视图中的同一行上显示两个值

时间:2014-06-14 22:16:25

标签: android listview

我希望能够在同一行显示产品的名称和价格。现在,它显示为: 产品名称 产品价格

我尝试添加一个水平方向的线性布局,尝试使用权重/重量,并且无法弄清楚如何正确显示,就像在普通菜单中一样,名称在左侧和价格在右边。我也试过设置它们的引力,但它总是将它们显示在两行上。我想这样显示它们:

产品名称...........................产品价格

布局:

<?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" 
 android:background="#ffffff">

  <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

  <TextView
        android:id="@+id/Price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        />
  <LinearLayout
      android:id="@+id/LinearLayout01"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:orientation="horizontal" >

      <Button
          android:id="@+id/Remove"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="bottom|center"
          android:text="Remove product(s)" />

      </LinearLayout>

</LinearLayout>

我如何添加项目:

oslist = new ArrayList<HashMap<String, String>>();

  HashMap<String, String> map = new HashMap<String, String>();
  map.put(PROD_NAME, name);
  map.put(PROD_PRICE, price);
  oslist.add(map);

   adapter = new SimpleAdapter(shopping_cart.this, oslist,
            R.layout.shoppingcart,
            new String[] {PROD_NAME, PROD_PRICE}, new int[] {R.id.name, R.id.Price});
    setListAdapter(adapter);

1 个答案:

答案 0 :(得分:0)

使用RelativeLayout创建这样的布局通常更容易,因为它可以让您更好地控制视图的位置。您可以使用名称元素layout_alignParentLeft="true"和价格元素layout_alignParentRight="true"(可能layout_gravity="right"来对齐文字)。

修改

这是您的XML可能是什么样子。如果您使用的是layout_gravity,则您实际上不需要layout_width="wrap_parent"属性,并且我省略了删除按钮,因为我不确定您希望它在哪里。

这种布局允许名称和价格重叠,如果它们太长 - 可能最好的选择是将名称元素放在中的价格元素并添加{{1它。这迫使它包装名称而不是重叠价格。

layout_toLeftOf="@id/Price"