简体   繁体   English

从ListView读取EditText内容

[英]Read EditText Content From ListView

I have a ListView in following manner 我有以下方式的ListView

Item_name       Quantity      Price/Unit    Net Amount

<TextView>     <EditText>    <TextView>    <TextView>
<TextView>     <EditText>    <TextView>    <TextView>
<TextView>     <EditText>    <TextView>    <TextView>
<TextView>     <EditText>    <TextView>    <TextView>

and so on 等等

Now i want that when i enter any text in the EditText for quantity then it should generate the Net Amount by given formaula 现在我想要当我在EditText中输入任何文本作为数量时,它应该通过给定的公式生成净额

Net Amount=Quantity*Price/Unit 净额=数量*价格/单位

Example

Quantity 3 Price/Unti 30 数量3价格/完整30

so Net Amount TextView should display 90 因此净额TextView应该显示90

I want this in an efficient user interface way 我想要一个有效的用户界面方式

Please give me any solution 请给我任何解决方案

My code 我的密码

Class FinalOrder.java

import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.DAL.MenuCumActivity;

public class FinalOrder extends MenuCumActivity
{
    private static String[] items=null;
    private static String[] price=null;
    private static String[] netamount=null;
    private ListView listview;
    public void onCreate(Bundle b)
    {
        super.onCreate(b);
        setContentView(R.layout.finalorderview);
        items=getIntent().getStringArrayExtra("items");
        price=getIntent().getStringArrayExtra("price");
        netamount=new String[price.length];
        listview=(ListView)findViewById(R.id.listview);
        EfficientAdapter adapter=new EfficientAdapter(this);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parentView, View v, int position,long id) 
            {
                Toast.makeText(v.getContext(),"select",Toast.LENGTH_LONG).show();
            }
        });
    }
    public void onFocus(View v)
    {
        listview.setFocusable(true);
        //listview.
    }
    private static class EfficientAdapter extends BaseAdapter 
    {
         private LayoutInflater mInflater;
         private Context ctx;
         public EfficientAdapter(Context context)
         {
             ctx=context;
             mInflater = LayoutInflater.from(context);
         }

         public int getCount() 
         {
             return items.length;
         }
         public Object getItem(int position) 
         {
             return position;
         }
         public long getItemId(int position) 
         {
             return position;
         }
         public View getView(int position, View convertView, ViewGroup parent) 
         {
            ViewHolder holder;
            if (convertView == null) 
            {
                 convertView = mInflater.inflate(R.layout.finalorderitem,parent,false);
                 holder = new ViewHolder();
                 holder.item = (TextView) convertView.findViewById(R.id.txtnameFinalOrderItem);
                 holder.quantity=(EditText)convertView.findViewById(R.id.edttextFinalOrderQty);


                 holder.singleprice = (TextView) convertView.findViewById(R.id.txtperpriceFinalOrderItem);
                 holder.finalprice=(TextView)convertView.findViewById(R.id.txtfinalpriceFinalOrderItem);
                 holder.item.setText(items[position]);
                 holder.singleprice.setText(price[position]);
                 int net_amount=0;
                 if(!holder.quantity.getText().toString().equals(""))
                     net_amount=Integer.parseInt(holder.quantity.getText().toString())*Integer.parseInt(price[position]);
                 holder.finalprice.setText(""+net_amount);
                 convertView.setTag(holder);
            }
            else
            {
                holder = (ViewHolder) convertView.getTag();
            }
            holder.item.setText(items[position]);
            holder.singleprice.setText(price[position]);
            holder.quantity.setText("");
            int net_amount=0;
            if(!holder.quantity.getText().toString().equals(""))
                net_amount=Integer.parseInt(holder.quantity.getText().toString())*Integer.parseInt(price[position]);
            holder.finalprice.setText(""+net_amount);
            return convertView;
         }
         public class ViewHolder 
         {
             TextView item;
             EditText quantity;
             TextView singleprice;
             TextView finalprice;

         }
    }
}

My Layout Files 我的布局文件

finalorderview.xml finalorderview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
    <!-- Header -->
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="10dip"
        android:orientation="horizontal"
        android:paddingBottom="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <TextView android:id="@+id/heading"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Select Quantity"
            android:gravity="left"
            android:layout_weight="1"
            android:textColor="#CC6633"
            android:textSize="25px"
            android:textStyle="bold"
        />
        <Button
            android:text="Make Order"
            android:id="@+id/btnOrder"
            android:layout_weight="1"
            android:textSize="15px"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_gravity="center"
            android:padding="5dip"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtnameItem"
                android:text="Item"
                android:gravity="center"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </LinearLayout>
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:padding="5dip"
            android:gravity="left"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtquantityfinalorder"
                android:text="Quantity"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center">
            </TextView>
            <TextView
                android:id="@+id/txtperprice"
                android:gravity="center"
                android:text="Price"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_gravity="left">
            </TextView>
            <TextView
                android:id="@+id/txtfinalprice"
                android:gravity="right"
                android:text="Net Amount"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right">
            </TextView>
        </LinearLayout>
    </LinearLayout>
    <!-- List Divider -->
    <View android:layout_width="fill_parent"
        android:layout_height="5dip"
        android:background="#C85A17" />
    <!-- ListView (list_items) -->
    <LinearLayout android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:layout_height="wrap_content">
        <ListView android:id="@+id/listview"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:descendantFocusability="beforeDescendants"
            android:layout_width="fill_parent">
        </ListView>
    </LinearLayout>
</LinearLayout>

2) finalorderitem.xml 2)finalorderitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:orientation="vertical"
  android:background="#FFFFFF"
  android:layout_height="fill_parent">
    <LinearLayout
        android:layout_margin="15dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="#FFFFFF"
        android:orientation="horizontal"
        android:id="@+id/linearLayout1">
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_gravity="center"
            android:padding="3dip"
            android:paddingRight="0dip"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtnameFinalOrderItem"
                android:textSize="20px"
                android:textStyle="bold"
                android:text="col_1"
                android:gravity="left"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </LinearLayout>
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:textStyle="bold"
            android:id="@+id/linearLayout2">
            <EditText
                android:text="0"
                android:id="@+id/edttextFinalOrderQty"
                android:layout_width="fill_parent"
                android:layout_weight="1"
                android:numeric="integer"
                android:layout_height="wrap_content">
            </EditText>
            <TextView
                android:id="@+id/txtperpriceFinalOrderItem"
                android:gravity="center"
                android:layout_gravity="center"
                android:text="price"
                android:layout_weight="1"
                android:textSize="15px"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
            <TextView
                android:id="@+id/txtfinalpriceFinalOrderItem"
                android:gravity="right"
                android:layout_gravity="center"
                android:text="col_2"
                android:layout_weight="1"
                android:textSize="20px"
                android:textStyle="bold"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
  1. You can create one layout with three TextView and one EditText control and inflect your layout. 您可以使用三个TextView和一个EditText控件创建一个布局,并更改布局。
  2. In getView method you can access all UI object. getView方法中,您可以访问所有UI对象。
  3. Write anonymous inner class for onkeylistener onkeylistener编写匿名内部类
  4. calculate net amount and set in TextView . 计算净额并在TextView设置。

     holder.quantity=(EditText)convertView.findViewById(R.id.edttextFinalOrderQty); holder.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { //////////// calculation /////// return false; } }); 

Let me know if you required more help, 如果您需要更多帮助,请告诉我,

KPBird KPBird

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM