我想为产品创建一个列表视图,每个产品行包含费率,税,折扣,rowtotal等字段

时间:2016-06-13 09:59:17

标签: android

这里我附上了设计的截图。我真的很困惑如何使用listview在布局中设计textview

enter image description here

这是我的列表

的xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/order"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <include
            layout="@layout/app_toolbar_conformation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
                <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:orientation="vertical"
                android:background="#FFFFFF"
                android:id="@+id/lin">
                <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginBottom="10dp"
                    android:orientation="vertical">
                   <RelativeLayout
                        android:layout_width="wrap_content"
                        android:layout_height="90dp"
                        android:orientation="vertical"
                        android:layout_marginTop="38dp"
                        android:background="@drawable/layout_bg1"
                        android:layout_alignParentEnd="true"
                        android:weightSum="1">
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginTop="5dp"
                            android:orientation="horizontal"
                            android:id="@+id/relativeLayout10"
                            android:weightSum="1">
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Product"
                                android:layout_margin="5dp"
                                android:textSize="12dp"
                                android:textColor="#000000"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Qty"
                                android:textSize="10dp"
                                android:layout_marginTop="10dp"
                                android:layout_margin="5dp"
                                android:textColor="#000000"
                                />

                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Price"
                                android:textSize="10dp"
                                android:layout_margin="5dp"
                                android:layout_marginTop="5dp"
                                android:textColor="#000000"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="SubTotal"
                                android:textSize="10dp"
                                android:layout_margin="5dp"
                                android:layout_marginTop="5dp"
                                android:textColor="#000000"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Tax"
                                android:textSize="10dp"
                                android:layout_margin="5dp"
                                android:layout_marginTop="5dp"
                                android:textColor="#000000"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Discount"
                                android:textSize="10dp"
                                android:layout_margin="5dp"
                                android:layout_marginTop="5dp"
                                android:textColor="#000000"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="RowTotal"
                                android:textSize="10dp"
                                android:layout_margin="5dp"
                                android:layout_marginTop="5dp"
                                android:textColor="#000000"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_below="@+id/relativeLayout10"
                            android:orientation ="horizontal"
                            android:id="@+id/Layout11"
                            android:weightSum="1">
                            <ListView //here i create a list view 
                                android:id="@+id/list"
                                android:layout_width="fill_parent"
                                android:layout_height="wrap_content" />

                        </LinearLayout>
                    </RelativeLayout>
                </RelativeLayout>
            <Button
                    android:id="@+id/btn_placeorder"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="15dp"
                    android:background="@color/colorPrimaryCustom"
                    android:text="Place Order"
                    android:textColor="#fff" />

            </LinearLayout>
        </ScrollView>
    </LinearLayout>

列表视图文本文件的另一个xml布局

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

                <TextView xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="55dp"//these are the some textfields which I want to display in the `listview` 
                    android:layout_height="40dp"
                    android:text="Surdines"
                    android:id="@+id/productname"
                    android:layout_margin="5dp"
                    android:layout_marginTop="15dp"
                    android:textSize="12dp"
                    android:textColor="#000000"
                    android:weightSum="1"
                    />

                <TextView xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="6"
                    android:id="@+id/discount"
                    android:textSize="10dp"
                    android:weightSum="1"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginTop="5dp"
                    android:textColor="#000000"
                    />
                <TextView xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="6"
                    android:id="@+id/rowtotal"
                    android:textSize="10dp"
                    android:weightSum="1"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginTop="5dp"
                    android:textColor="#000000"/>


</LinearLayout>

如果有人知道请解释如何设计xml。我不知道如何设计它。我使用json对象显示单个产品的文本字段值,但如果我想购买更多产品,则此情况不起作用。

1 个答案:

答案 0 :(得分:0)

像这个列表项可能有帮助

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

    <TextView 
        android:id="@+id/productname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:layout_marginTop="15dp"
        android:text="Surdines"
        android:textColor="#545454"
        android:textSize="18sp"
        android:weightSum="1" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

        <TextView
            android:id="@+id/discount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:text="6%"
            android:textColor="#ff7733"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/rowtotal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:layout_weight="1"
            android:text="6 remaining"
            android:textColor="#ff9988"
            android:textSize="12sp" />
    </LinearLayout>
</LinearLayout>

然后在你的java代码中,让你的listview(我在这种情况下使用AbsListView)注册一个上下文菜单。我为此做了一个简单的活动,如下所示:

package com.example.listitems;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListAdapter;
import android.widget.ListView;


import java.util.ArrayList;

public class ProductActivity extends AppCompatActivity implements AbsListView.OnItemClickListener {
    private static final int ACTIVITY_BUY = 1;
    private ArrayList<ProductItem> ITEMS = new ArrayList<>();


    private AbsListView listView;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.product_list);

        listView = (AbsListView) findViewById(R.id.list);
        listView.setOnItemClickListener(this);

        registerForContextMenu(listView);
    }

    @Override
    protected void onResume() {
        loadInventory();
        super.onResume();
    }

    private void loadInventory() {

        ITEMS.clear();
        do {
            ProductItem newItem = new ProductItem(/*Put your constructor values here*/);
            ITEMS.add(newItem);
        } while (/*Source is not exhausted*/);
        ProductAdapter products = new ProductAdapter(ProductActivity.this, ITEMS);//create a custom adapter if you wish
        ((AdapterView<ListAdapter>)listView).setAdapter(products);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater mi = getMenuInflater();
        mi.inflate(R.menu.list_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater mi = getMenuInflater();
        mi.inflate(R.menu.list_menu_item_longpress, menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_details:
                AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                showDetailsAboutObject(info.id);
                return true;
        }
        return super.onContextItemSelected(item);
    }


    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        ProductItem item = (ProductItem) parent.getAdapter().getItem(position);
        Intent i = new Intent(ProductActivity.this, BuyProductActivity.class);
        i.putExtra("PRODUCT_ID", item.getItemId());
        startActivityForResult(i, ACTIVITY_BUY);
    }
}
相关问题