2016-05-10 8 views
1

友人私はアンドロイドに新しく、自分で学習しています。私は学習のための請求書マネージャーアプリを作成していました。ここで製品は管理者によって追加され、正常に動作しています。ユーザーには請求書を作成する権限しかありません。ユーザがcreate_invoiceアクティビティに到着すると、アイテムを追加するフレームレイアウトが設定されます。ユーザーがフレームレイアウトを押すと、彼は管理者が追加したリストビューで製品価格と共にリスト項目のすべてのセットを見つけることができる別のアクティビティを見るために作られます。ユーザーがアイテムを押すと、彼は再びcreate_invoiceアクティビティに戻り、警告ボックスが表示され、必要な数量が尋ねられます。ユーザーがqtyを入力して[OK]ボタンをクリックすると、最初にリスト項目が必要なだけ正しく表示されます。しかし、2番目の項目を追加すると、1番目の項目が置き換えられます。だから今私の問題はどのように私はこの問題を解決することができます..男は私を助けてください。あなたが見つけたコードは非常にばかげているかもしれませんが、私はまだ学んでいます。前もって感謝します。リスト項目をアンドロイドでリストビューに動的に挿入する

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> 

請求書製品リスト(getterとsetter)

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; 
    } 
} 

答えて

0

アダプタで使用している(アダプタがnullでないことを確認した後に)アダプタオブジェクトのメソッドnotifyDataSetChanged()を呼び出して項目をリストに追加します。

+0

おかげrecyclerviewのための非常に良いです。しかし変更はありません..まだ前のリスト項目を置き換えています。でも、何かが起こっているのを見るためにlistViewの背景色を変更しました。変更はありません.. Plz help .. – Prabhu

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(); 
} 


...... 
} 
+0

返信してくれてありがとう..しかし、それはまだ動作していません..私は同じことで1週間からstugglingしてきましたが、何も動作していません。私はここで仲間の質問をしている、活動間の切り替えはlistViewに影響を与えているか?もう一度私の質問を見て、問題を見つけることができます... PLZ ..事前に感謝... – Prabhu

0

いいえ、それは何も変わりません。あなたが最新の作業方法を望むなら、RecyclerViewをカスタムリストアダプターにすることを好むでしょう。このリンク)が実行されている(私は上記の答えをチェックし、アダプタがnullとnotifyDatasetChangedない..です返信用

recyclerview demo series link

関連する問題