将列表项动态插入到android

时间:2016-05-10 15:03:40

标签: android listview

朋友我是Android的新手并且自己学习。我正在为学习创建发票管理器应用程序。这里的产品由管理员添加,工作正常。用户只有创建发票的权限。当用户进入create_invoice活动时,他有一组框架布局,其中一个用于添加项目。当用户按下框架布局时,他会看到另一个活动,他可以在列表视图中找到所有列表项以及管理员已添加的产品价格。现在,当用户按下某个项目时,他再次返回到create_invoice活动,并出现一个警告框,询问所需的数量。当用户输入数量并单击“确定”按钮时,对于第一个,列表项将根据需要正确显示。但是当我添加第二项时,第一项被替换。所以现在我的问题是如何解决这个问题..伙计们请帮助我。你发现的代码可能非常愚蠢,但我还在学习。提前谢谢。

Create_invoice活动

 //data from activity invoice add_item
  product_name = intent.getStringExtra("product_name");
  product_price = intent.getDoubleExtra("product_price",0);
  //product_qty = intent.getIntExtra("product_qty",0);
  product_code = intent.getIntExtra("product_code",0);

  if(product_name!= null && product_price!= 0 && product_code!= 0)
  {
    try {
        builder = new AlertDialog.Builder(this);
        builder.setTitle("Product Qty");
        layoutInflater = LayoutInflater.from(Create_invoice.this);
      view = layoutInflater.inflate(R.layout.dialoglayout_invoice,null);
        builder.setView(view);

 builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which) {
  EditText etxt_dialog_qty=(EditText)view.findViewById(R.id. 
   etxt_dialog_qty);

                int qty = Integer. parseInt (etxt_dialog_qty.getText(). 
             toString().trim());

                invoice_product_list products = new invoice_product_list 
  (product_name, product_price, qty, product_code);

         //arraylist
        ArrayList<invoice_product_list> productList = new ArrayList<>();

         //customAdapter
     customAdapterInvoice = new custom_adapter_invoice 
   (Create_invoice.this, productList);

                customAdapterInvoice.add(products);

                customAdapterInvoice.notifyDataSetChanged();

                //listview in create_invoice activity
                listView_additem = (ListView) 
 findViewById(R.id.listview_additem);

                listView_additem.setAdapter(customAdapterInvoice);

                alertDialog.dismiss();
            }
        });

        builder.setNegativeButton("Cancel", new 
      DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                alertDialog.dismiss();
            }
        });

        alertDialog = builder.create();
        alertDialog.show();

    }
    catch (Exception e)
    {
        System.out.print(e);
    }
}

customAdapter

  public class custom_adapter_invoice extends ArrayAdapter 
   <invoice_product_list> {

   public custom_adapter_invoice(Context context,   
  ArrayList<invoice_product_list> product_details) {
   super(context, R.layout.custom_row_invoice_item, product_details);
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater layoutInflater = LayoutInflater.from(getContext());
View view =   
layoutInflater.inflate(R.layout.custom_row_invoice_item,parent,false);

invoice_product_list products = getItem(position);

TextView txt_product_name = 
(TextView)view.findViewById(R.id.txt_product_name);

TextView txt_product_price = 
 (TextView)view.findViewById(R.id.txt_product_price);

  TextView txt_product_qty = 
 (TextView)view.findViewById(R.id.txt_product_qty);

  TextView txt_product_code = 
  (TextView)view.findViewById(R.id.txt_product_code);

  txt_product_name.setText(products.getProduct_name());

txt_product_price.setText(String.valueOf(products.getProduct_price()));

txt_product_qty.setText(String.valueOf(products.getProduct_qty()));

txt_product_code.setText(String.valueOf(products.getProduct_code()));

return view;

}

创建发票活动

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.v4.widget.DrawerLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
android:layout_height="match_parent"
 app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.tournonstop.m.invoicemanager.Create_invoice"
tools:showIn="@layout/activity_create_invoice">

  <LinearLayout
  android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/darker_gray">

<include layout="@layout/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="85dp"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@android:color/white"
    android:id="@+id/invoice_frame_company">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/company_name"
        android:id="@+id/txt_company_name"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/invoice_date"
        android:id="@+id/txt_invoice_date"
        android:layout_gravity="right"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/invoice_no"
        android:id="@+id/textView3"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="45dp"/>

</FrameLayout>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@android:color/white"
    android:id="@+id/invoice_frame_client"
    android:clickable="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/to"
        android:id="@+id/txt_to"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/txt_client_address"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="10dp"
        android:hint="@string/client_hint"/>

</FrameLayout>

 ----listview to add items-----
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="210dp"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@android:color/white"
    android:id="@+id/invoice_frame_add_item"
    android:clickable="true">
    <ListView
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:id="@+id/listview_additem"
        android:divider="#040404" />
</FrameLayout>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_marginTop="2dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@android:color/white"
    android:id="@+id/invoice_frame_sub_total">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/total_label"
        android:id="@+id/txt_sub_total_label"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:textStyle="bold"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/total"
        android:id="@+id/txt_sub_total"
        android:layout_gravity="right"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:textStyle="bold"
        android:hint="@string/total_hint" />

</FrameLayout>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginTop="40dp"
    android:text="@string/invoice_btn"
    android:textStyle="bold"
    android:background="@color/colorPrimaryDark"
    android:textColor="@android:color/white"
    android:clickable="true"
    android:id="@+id/btn_invoice_save" />

   </LinearLayout>

  < /android.support.v4.widget.DrawerLayout>

发票产品清单(吸气剂和制定者)

   package com.tournonstop.m.invoicemanager;

 public class invoice_product_list {

 private String product_name;
 private double product_price;
private int product_qty;
 private int product_code;

  public invoice_product_list(){

 }

  public invoice_product_list(String product_name,double 
  product_price,int product_qty,int product_code){
  this.product_name = product_name;
  this.product_price = product_price;
  this.product_qty = product_qty;
  this.product_code = product_code;
  }

 public String getProduct_name() {
  return product_name;
 }

   public void setProduct_name(String product_name) {
  this.product_name = product_name;
  }

  public int getProduct_code() {
  return product_code;
 }

  public void setProduct_code(int product_code) {
   this.product_code = product_code;
 }

  public double getProduct_price() {
  return product_price;
 }

  public void setProduct_price(double product_price) {
  this.product_price = product_price;
   }

  public int getProduct_qty() {
  return product_qty;
  }

  public void setProduct_qty(int product_qty) {
  this.product_qty = product_qty;
   }
 }

3 个答案:

答案 0 :(得分:0)

将项添加到您在适配器中使用的列表中(在验证适配器不为null之后)在适配器对象上调用方法notifyDataSetChanged()。

答案 1 :(得分:0)

create_invoice活动

 //arraylist
    ArrayList<invoice_product_list> productList = new ArrayList<>();

     //customAdapter
 customAdapterInvoice = new custom_adapter_invoice 
(Create_invoice.this, productList);

            customAdapterInvoice.addProduct(products)

自定义适配器

public class custom_adapter_invoice extends ArrayAdapter <invoice_product_list> 
{
ArrayList<invoice_product_list> productList = new ArrayList<>();
public custom_adapter_invoice(Context context,   
ArrayList<invoice_product_list> product_details) {
super(context, R.layout.custom_row_invoice_item, product_details);
this.productList =product_details
}

public void addProduct(Product products
productList.add(products);
notifyDataSetChanged();
}


 ......
}

答案 2 :(得分:0)

不,它没有改变任何东西。如果你想要最新的工作方法,那么我更喜欢RecyclerView自定义列表适配器。这个链接非常适合recyclerview

recyclerview demo series link