如何减少android中的表加载时间

时间:2015-03-02 05:09:05

标签: java android sqlite

我的应用程序有一个搜索产品选项。我需要搜索150种产品中的少数产品(至少)。我已经这样做了,但是当我删除产品搜索选项中的最后一个字符时,我必须等待几秒钟(30秒),因为在这段时间内所有产品都应该加载到表格中(150个产品),但我需要减少时间。

我的表格布局类

public class TableMainLayout extends RelativeLayout implements OnClickListener{

InvoiceItemClickListner callBack;
public final String TAG = "TableMainLayout.java";
ArrayList<Product> New_productList;
HashMap<String, RetailerSalesSummary> retailerSummry;
public ArrayList<Expense> expense = new ArrayList<Expense>();
HashMap<String,String> shelfStockValue;
private DecimalFormat df = new DecimalFormat("###,###,###,##0.00"); 


int texthead = (int) (getResources().getDimension(R.dimen.boldtext) / getResources()
        .getDisplayMetrics().density);
int textRow = (int) (getResources().getDimension(R.dimen.normalText) / getResources()
        .getDisplayMetrics().density);
int pcellLpWP = (int) (getResources().getDimension(R.dimen.pcellSecWP) / getResources()
        .getDisplayMetrics().density);
int thheight = (int) (getResources().getDimension(R.dimen.icellLpH) / getResources()
        .getDisplayMetrics().density);
int bheight = (int) (getResources().getDimension(R.dimen.icellLpBH) / getResources()
        .getDisplayMetrics().density);
int pcellLpW = (int) (getResources().getDimension(R.dimen.pcellLpW) / getResources()
        .getDisplayMetrics().density);
int pcellSmallB = (int) (getResources().getDimension(R.dimen.pcellSmallD) / getResources()
        .getDisplayMetrics().density);
int longdesPadingH =  (int) (getResources().getDimension(R.dimen.cellLOngHieght) / getResources()
        .getDisplayMetrics().density);
TableRow.LayoutParams cellSecL = new TableRow.LayoutParams(pcellLpWP,
        thheight, 1.0f);
TableRow.LayoutParams cellLp = new TableRow.LayoutParams(pcellLpW,
        thheight, 1.0f);
TableRow.LayoutParams cellSmallB = new TableRow.LayoutParams(pcellSmallB,
        thheight, 1.0f);



// set the header titles
String headers[] = {
    "Description",
    "Qty",
    "Value",
    "Shelf",
    "Reason",
    "Dis Qty",
    "DisProduct",
    "Dis Val",
    "LongDescrip",
    "PCode"
};

TableLayout tableA;
TableLayout tableB;
TableLayout tableC;
TableLayout tableD;

HorizontalScrollView horizontalScrollViewB;
HorizontalScrollView horizontalScrollViewD;  

ScrollView scrollViewC;
ScrollView scrollViewD;

Context context;



int headerCellsWidth[] = new int[headers.length+1];

public TableMainLayout(Context context,
        InvocieProductFragment invocieProductFragment,
        ArrayList<Product> productList,
        HashMap<String, String> shelfStockValue, ArrayList<Expense> expense,boolean StckValidation) {

    super(context);

    this.context = context;
    this.callBack = (InvoiceItemClickListner) invocieProductFragment;
    // initialize the main components (TableLayouts, HorizontalScrollView,
    // ScrollView)
    this.initComponents(productList, retailerSummry,shelfStockValue,expense);
    this.setComponentsId();
    this.setScrollViewAndHorizontalScrollViewTag();

    // no need to assemble component A, since it is just a table
    this.horizontalScrollViewB.addView(this.tableB);

    this.scrollViewC.addView(this.tableC);

    this.scrollViewD.addView(this.horizontalScrollViewD);
    this.horizontalScrollViewD.addView(this.tableD);

    // add the components to be part of the main layout
    this.addComponentToMainLayout();

    // add some table rows
    this.addTableRowToTableA(StckValidation);
    this.addTableRowToTableB();

    this.resizeHeaderHeight();

    this.getTableRowHeaderCellWidth();

    this.generateTableC_AndTable_B(StckValidation);

    this.resizeBodyTableRowHeight();
}


// initalized components
private void initComponents(ArrayList<Product> productList,
        HashMap<String, RetailerSalesSummary> retailerSummry,
        HashMap<String, String> shelfStockValue, ArrayList<Expense> expense) {

    this.tableA = new TableLayout(this.context);
    this.tableB = new TableLayout(this.context);
    this.tableC = new TableLayout(this.context);
    this.tableD = new TableLayout(this.context);

    this.horizontalScrollViewB = new MyHorizontalScrollView(this.context);
    this.horizontalScrollViewD = new MyHorizontalScrollView(this.context);

    this.scrollViewC = new MyScrollView(this.context);
    this.scrollViewD = new MyScrollView(this.context);

    this.New_productList = productList;
    this.retailerSummry = retailerSummry;
    this.shelfStockValue = shelfStockValue;
    this.expense = expense;

}

// set essential component IDs
private void setComponentsId(){
    this.tableA.setId(1);
    this.horizontalScrollViewB.setId(2);
    this.scrollViewC.setId(3);
    this.scrollViewD.setId(4);
}

// set tags for some horizontal and vertical scroll view
private void setScrollViewAndHorizontalScrollViewTag(){

    this.horizontalScrollViewB.setTag("horizontal scroll view b");
    this.horizontalScrollViewD.setTag("horizontal scroll view d");

    this.scrollViewC.setTag("scroll view c");
    this.scrollViewD.setTag("scroll view d");
}

// we add the components here in our TableMainLayout
private void addComponentToMainLayout(){

    // RelativeLayout params were very useful here
    // the addRule method is the key to arrange the components properly
    RelativeLayout.LayoutParams componentB_Params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    componentB_Params.addRule(RelativeLayout.RIGHT_OF, this.tableA.getId());

    RelativeLayout.LayoutParams componentC_Params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    componentC_Params.addRule(RelativeLayout.BELOW, this.tableA.getId());

    RelativeLayout.LayoutParams componentD_Params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    componentD_Params.addRule(RelativeLayout.RIGHT_OF, this.scrollViewC.getId());
    componentD_Params.addRule(RelativeLayout.BELOW, this.horizontalScrollViewB.getId());

    // 'this' is a relative layout, 
    // we extend this table layout as relative layout as seen during the creation of this class
    this.addView(this.tableA);
    this.addView(this.horizontalScrollViewB, componentB_Params);
    this.addView(this.scrollViewC, componentC_Params);
    this.addView(this.scrollViewD, componentD_Params);

}



private void addTableRowToTableA(boolean StckValidation){
    this.tableA.addView(this.componentATableRow(StckValidation));
}

private void addTableRowToTableB(){
    this.tableB.addView(this.componentBTableRow());

}

// generate table row of table A
TableRow componentATableRow(boolean StckValidation){
    TableRow.LayoutParams params = new TableRow.LayoutParams( pcellLpWP,thheight);
    params.setMargins(2, 2, 0, 0);
    //params.setMargins(2, 0, 0, 0);//10, 5, 10, 5
    //TableRow.LayoutParams cellSmallB = new TableRow.LayoutParams(66,thheight);
    TableRow.LayoutParams cellSmallB = new TableRow.LayoutParams(pcellSmallB,thheight);
    cellSmallB.setMargins(2, 2, 0, 0);
    //cellSmallB.setMargins(2, 0, 0, 0);
    TableRow componentATableRow = new TableRow(this.context);
    TextView textView = this.headerTextView(this.headers[0]);
    TextView textView1 = this.headerTextView("");
    componentATableRow.addView(textView1,cellSmallB);
    componentATableRow.addView(textView,params);
    if(!StckValidation)
    {
        textView1.setVisibility(View.GONE);
    }


    return componentATableRow;
}

// generate table row of table B
TableRow componentBTableRow(){

    TableRow componentBTableRow = new TableRow(this.context);
    int headerFieldCount = this.headers.length;

    TableRow.LayoutParams params = new TableRow.LayoutParams(pcellLpW,thheight);
    params.setMargins(2, 0, 0, 0);

    TableRow.LayoutParams paramlong = new TableRow.LayoutParams( pcellLpWP,thheight);
    paramlong.setMargins(2, 0, 0, 0);

    for(int x=0; x<(headerFieldCount-1); x++){
        TextView textView = this.headerTextView(this.headers[x+1]);
        textView.setLayoutParams(params);

        if(headers[x+1].equals("Shelf") || headers[x+1].equals("Reason"))
        {
            textView.setVisibility(View.GONE);
        }else if(headers[x+1].equals("LongDescrip"))
        {
            textView.setLayoutParams(paramlong);
        }
        componentBTableRow.addView(textView);
    }

    return componentBTableRow;
}

// generate table row of table C and table D
private void generateTableC_AndTable_B(boolean StckValidation){


    int position = 0;
    for(Product productObject : this.New_productList){


        TableRow tableRowForTableC = this.tableRowForTableC(productObject,StckValidation);
        TableRow taleRowForTableD = this.taleRowForTableD(productObject,position);

        tableRowForTableC.setBackgroundColor(Color.GRAY);
        taleRowForTableD.setBackgroundColor(Color.GRAY);

        this.tableC.addView(tableRowForTableC);
        this.tableD.addView(taleRowForTableD);
        position++;

    }
}

// a TableRow for table C
TableRow tableRowForTableC(Product product,boolean StckValidation){      
    TableRow.LayoutParams cellSmallB = new TableRow.LayoutParams(pcellSmallB,bheight);
    cellSmallB.setMargins(2, 2, 0, 0);
    //cellSmallB.setMargins(10, 5, 10, 5);
    TableRow.LayoutParams params = new TableRow.LayoutParams( pcellLpWP,thheight);
    params.setMargins(2, 2, 0, 0);


    TableRow tableRowForTableC = new TableRow(this.context);

    ImageButton btnProductDetails = new ImageButton(context);
    btnProductDetails.setImageDrawable(context.getResources()
            .getDrawable(R.drawable.invoice_de_btn));
    btnProductDetails.setId(1);
    btnProductDetails.setTag(product);
    //btnProductDetails.setGravity(Gravity.CENTER);
    tableRowForTableC.addView(btnProductDetails,cellSmallB);
//  btnProductDetails.setVisibility(View.GONE);

    if( (!product.getSerialNumberRequired().equals("1")) && !(product.getBatchProcessingFlag().equals("1")) )
    {
        btnProductDetails.setEnabled(false); 
    }

    if(!StckValidation)
    {
        btnProductDetails.setVisibility(View.GONE);
    }

    TextView textView1 = this.bodyTextView(product.getDescription(),Gravity.LEFT,Color.LTGRAY);
    tableRowForTableC.addView(textView1,params);



    btnProductDetails.setOnClickListener(this);



    return tableRowForTableC;
}

TableRow taleRowForTableD(final Product product,final int position){

    TableRow.LayoutParams params = new TableRow.LayoutParams( pcellLpW,thheight);
    params.setMargins( 2, 2, 0, 0);
    TableRow.LayoutParams paramstest = new TableRow.LayoutParams( pcellLpW,thheight);
    paramstest.setMargins(2, 1, 0, 0);

    TableRow.LayoutParams paramlong = new TableRow.LayoutParams( pcellLpWP,thheight);
    paramlong.setMargins(2, 2, 0, 0);

    final TableRow taleRowForTableD = new TableRow(this.context); 
    taleRowForTableD.setTag(position);


    EditText txtQty = this.bodyEditTextView("0",Gravity.CENTER,Color.WHITE);
    txtQty.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            callBack.onTableRowChildClicked("QTY",position,taleRowForTableD,v,product);
        }
    });

    taleRowForTableD.addView(txtQty,params);


    TextView txtVal = this.bodyTextView("0.0",Gravity.CENTER,Color.WHITE);
    taleRowForTableD.addView(txtVal,params);

    final EditText txtSQty;
    if(shelfStockValue.containsKey(product.getProductCode()))
    {
         txtSQty = this.bodyEditTextView(shelfStockValue.get(product.getProductCode()),Gravity.CENTER,Color.WHITE);
    }else
    {
         txtSQty = this.bodyEditTextView("0",Gravity.CENTER,Color.WHITE);
    }
    txtSQty.setTag("ShelfQTY");
    txtSQty.setVisibility(View.GONE);
    txtSQty.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            callBack.onTableRowChildClicked("ShelfQTY",position,taleRowForTableD,v,product);
        }
    });


    txtSQty.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            callBack.onTableRowChildClicked("ShelfQTY",position,taleRowForTableD,v,product);
        }
    });

    taleRowForTableD.addView(txtSQty,params);


    final Spinner spinner = new Spinner(this.context);
    spinner.setVisibility(View.VISIBLE);
    spinner.setPadding(5, 1, 5, 1);  
    spinner.setBackgroundColor(Color.WHITE);
    //spinner.setBackgroundResource(R.drawable.spinner_background_ab_whiteaction);
    spinner.setVisibility(View.GONE);
    taleRowForTableD.addView(spinner,params);

    spinner.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            callBack.onTableRowChildTouch("SpinnerTouch",position,taleRowForTableD,v,product);

            return false;
        }
    });
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long arg3) {

            callBack.onItemSelected("SpinnerSelected",parent,view,position,product);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {


        }
    });




    TextView txtDQty = this.bodyTextView("0",Gravity.CENTER,Color.WHITE);
    taleRowForTableD.addView(txtDQty,params);

    TextView txtDPCode = this.bodyTextView("",Gravity.CENTER,Color.WHITE);
    taleRowForTableD.addView(txtDPCode,params);

    TextView txtDisVal = this.bodyTextView("0.00",Gravity.CENTER,Color.WHITE);
    taleRowForTableD.addView(txtDisVal,params);


    //TextView txtDPCodetxtLongDes = this.bodyTextView1(product.getDescription2(),Gravity.LEFT);
    //taleRowForTableD.addView(txtDPCodetxtLongDes,paramstest);

    TextView txtDPCodetxtLongDes = this.bodyTextView1(product.getDescription2(),Gravity.LEFT);
    //txtDPCodetxtLongDes.setFocusable(false);
    taleRowForTableD.addView(txtDPCodetxtLongDes,paramlong);

    TextView txtpCode = this.bodyTextView1(product.getProductCode(),Gravity.LEFT);
    taleRowForTableD.addView(txtpCode,paramstest);

    TextView txtVat = this.bodyTextView("0",Gravity.CENTER,Color.WHITE);
    txtVat.setVisibility(View.GONE);
    taleRowForTableD.addView(txtVat,params);


    setOrderItemDetails(this.context,product,"",taleRowForTableD);

    return taleRowForTableD;

}

// table cell standard TextView
TextView bodyTextView(String label, int gravity, int color) {

    TextView bodyTextView = new TextView(this.context);
    bodyTextView.setBackgroundColor(color);
    bodyTextView.setText(label);
    bodyTextView.setGravity(gravity);
    bodyTextView.setTextSize(textRow);
    bodyTextView.setPadding(5, 5, 5, 5);

    return bodyTextView;
}

// table cell standard TextView
TextView bodyTextView1(String label, int gravity) {

    TextView bodyTextView = new TextView(this.context);
    bodyTextView.setBackgroundColor(Color.WHITE);
    bodyTextView.setText(label);
    bodyTextView.setGravity(gravity);
    bodyTextView.setTextSize(textRow);
    bodyTextView.setPadding(5, longdesPadingH, 5, 5);

    return bodyTextView;
}

// table cell standard EditText
EditText bodyEditTextView(String label,int gravity,int Color ){


    EditText edttxt = new EditText(this.context);
    edttxt.setBackgroundColor(Color);
    edttxt.setText(label);
    edttxt.setGravity(gravity); 
    edttxt.setTextSize(textRow);
    edttxt.setLongClickable(false);
    edttxt.setInputType(InputType.TYPE_NULL);
    edttxt.setPadding(5, 5, 5, 5);
    edttxt.setHint("0");


    return edttxt;
}

// header standard TextView
TextView headerTextView(String label){

    TextView headerTextView = new TextView(this.context);
    headerTextView.setBackgroundResource(R.drawable.btn_red);
    headerTextView.setText(label);
    headerTextView.setTextSize(texthead);
    headerTextView.setTextColor(Color.WHITE);
    headerTextView.setTypeface(null, Typeface.BOLD);
    headerTextView.setGravity(Gravity.CENTER);
    headerTextView.setPadding(10, 5, 10, 5);

    return headerTextView;
}

// resizing TableRow height starts here
void resizeHeaderHeight() {

    TableRow productNameHeaderTableRow = (TableRow) this.tableA.getChildAt(0);
    TableRow productInfoTableRow = (TableRow)  this.tableB.getChildAt(0);

    int rowAHeight = this.viewHeight(productNameHeaderTableRow);
    int rowBHeight = this.viewHeight(productInfoTableRow);

    TableRow tableRow = rowAHeight < rowBHeight ? productNameHeaderTableRow : productInfoTableRow;
    int finalHeight = rowAHeight > rowBHeight ? rowAHeight : rowBHeight;

    this.matchLayoutHeight(tableRow, finalHeight);
}

void getTableRowHeaderCellWidth(){

    int tableAChildCount = ((TableRow)this.tableA.getChildAt(0)).getChildCount();
    int tableBChildCount = ((TableRow)this.tableB.getChildAt(0)).getChildCount();;

    for(int x=0; x<(tableAChildCount+tableBChildCount); x++){

        if(x==0){
            this.headerCellsWidth[x] = this.viewWidth(((TableRow)this.tableA.getChildAt(0)).getChildAt(x));
        }else if(x==1)
        {
            this.headerCellsWidth[x] = this.viewWidth(((TableRow)this.tableA.getChildAt(0)).getChildAt(x));
        }
        else{
            this.headerCellsWidth[x] = this.viewWidth(((TableRow)this.tableB.getChildAt(0)).getChildAt(x-2));
        }

    }  
}

// resize body table row height
void resizeBodyTableRowHeight(){

    int tableC_ChildCount = this.tableC.getChildCount();

    for(int x=0; x<tableC_ChildCount; x++){

        TableRow productNameHeaderTableRow = (TableRow) this.tableC.getChildAt(x);
        TableRow productInfoTableRow = (TableRow)  this.tableD.getChildAt(x);

        int rowAHeight = this.viewHeight(productNameHeaderTableRow);
        int rowBHeight = this.viewHeight(productInfoTableRow);

        TableRow tableRow = rowAHeight < rowBHeight ? productNameHeaderTableRow : productInfoTableRow;
        int finalHeight = rowAHeight > rowBHeight ? rowAHeight : rowBHeight;

        this.matchLayoutHeight(tableRow, finalHeight);      
    }

}

// match all height in a table row
// to make a standard TableRow height
private void matchLayoutHeight(TableRow tableRow, int height) {

    int tableRowChildCount = tableRow.getChildCount();

    // if a TableRow has only 1 child
    if(tableRow.getChildCount()==1){

        View view = tableRow.getChildAt(0);
        TableRow.LayoutParams params = (TableRow.LayoutParams) view.getLayoutParams();
        params.height = height - (params.bottomMargin + params.topMargin);

        return ;
    }

    // if a TableRow has more than 1 child
    for (int x = 0; x < tableRowChildCount; x++) {

        View view = tableRow.getChildAt(x);

        TableRow.LayoutParams params = (TableRow.LayoutParams) view.getLayoutParams();

        if (!isTheHeighestLayout(tableRow, x)) {
            params.height = height - (params.bottomMargin + params.topMargin);
            return;
        }
    }

}

// check if the view has the highest height in a TableRow
private boolean isTheHeighestLayout(TableRow tableRow, int layoutPosition) {

    int tableRowChildCount = tableRow.getChildCount();
    int heighestViewPosition = -1;
    int viewHeight = 0;

    for (int x = 0; x < tableRowChildCount; x++) {
        View view = tableRow.getChildAt(x);
        int height = this.viewHeight(view);

        if (viewHeight < height) {
            heighestViewPosition = x;
            viewHeight = height;
        }
    }

    return heighestViewPosition == layoutPosition;
}

// read a view's height
private int viewHeight(View view) {
    view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    return view.getMeasuredHeight();
}

// read a view's width
private int viewWidth(View view) {
    view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    return view.getMeasuredWidth();
}

// horizontal scroll view custom class
class MyHorizontalScrollView extends HorizontalScrollView{

    public MyHorizontalScrollView(Context context) {
        super(context);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        String tag = (String) this.getTag();

        if(tag.equalsIgnoreCase("horizontal scroll view b")){
            horizontalScrollViewD.scrollTo(l, 0);
        }else{
            horizontalScrollViewB.scrollTo(l, 0);
        }
    }

}

// scroll view custom class
class MyScrollView extends ScrollView{

    public MyScrollView(Context context) {
        super(context);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {

        String tag = (String) this.getTag();

        if(tag.equalsIgnoreCase("scroll view c")){
            scrollViewD.scrollTo(0, t);
        }else{
            scrollViewC.scrollTo(0,t);
        }
    }
}


public void setOrderItemDetails(Context context,Product product,String rawColor,TableRow tablerow)
{
    TableRow table_row = tablerow;
    EditText txtQty = (EditText) table_row.getChildAt(0);
    TextView txtVal =  (TextView) table_row.getChildAt(1);
    EditText txtSQty = (EditText) table_row.getChildAt(2);
    Spinner spinner = (Spinner) table_row.getChildAt(3);
    TextView txtDQty = (TextView) table_row.getChildAt(4);
    TextView txtDPCode = (TextView) table_row.getChildAt(5);
    TextView txtDiVal = (TextView) table_row.getChildAt(6);
    TextView txtVat =  (TextView) table_row.getChildAt(9);
    for (Map.Entry<String, ArrayList<MyProduct>> entry : InvocieProductFragment.mapOrderd
            .entrySet()) {
        ArrayList<MyProduct> lstStyle = entry.getValue();

        //int r=lstStyle.size();
        //System.out.println("size..."+r);
        for (int k = 0; k < lstStyle.size(); k++) {

            if (lstStyle.get(k).getProductCode().equals(product.getProductCode())) {
                //rawColor = "1";
                setTRowSectColor(tablerow);
                spinner.setEnabled(false);
                txtQty.setText("" + (int) lstStyle.get(k).getQty());
                txtDiVal.setText(""+ df.format(lstStyle.get(k).getDisValue()));
                txtDQty.setText(""+ (int) lstStyle.get(k).getDisQty());
                txtDPCode.setText(lstStyle.get(k).getDisProductCode());
                txtVal.setText(""+ df.format(lstStyle.get(k).getValue()));
                //txtPri.setText(""+ dn.format(lstStyle.get(k).getPrice()));
                txtVat.setText(""+ df.format(lstStyle.get(k).getVATValue()+ lstStyle.get(k).getBTTValue()+ lstStyle.get(k).getNBTValue()));

            }
        }

    }


    for (Map.Entry<String,ShelfStock> entry1 : InvocieProductFragment.alshelfStock
            .entrySet()) {
        ShelfStock rshelfstck1 = entry1.getValue();
        if(rshelfstck1.getProductCode().equals(product.getProductCode()))
        {
            txtSQty.setText(""+rshelfstck1.getShelfStckQty());
            int spinerIndex = rshelfstck1.getSpineerIndex();

            if(spinerIndex > 0)
            {
                ArrayAdapter<String> pNameAdapter = new ArrayAdapter<String>(context,R.layout.spinner_layout, createRReasonArrayList(expense));
                pNameAdapter.setDropDownViewResource(R.layout.spinner_layout);  
                spinner.setAdapter(pNameAdapter);
                spinner.setSelection(spinerIndex);
            }
        }
    }


}


public ArrayList<String> createRReasonArrayList(ArrayList<Expense> searchItem) {
    ArrayList<String> rReasonArrayList = new ArrayList<String>();
    rReasonArrayList.add("----Select-------");
    for (int i = 0; i < searchItem.size(); i++) {

        rReasonArrayList.add(searchItem.get(i).getParameterDescription());


    }
    Collections.sort(rReasonArrayList);
    return rReasonArrayList;
}

public void setTRowSectColor(TableRow tablerow) {
    TableRow table_row = tablerow;
    //TextView th3MQty = (TextView) table_row.getChildAt(0);
    EditText txtQty = (EditText) table_row.getChildAt(0);
    //TextView txtInvQty = (TextView) table_row.getChildAt(2);
    TextView txtVal = (TextView) table_row.getChildAt(1);
    EditText shelfQty = (EditText) table_row.getChildAt(2);
    Spinner spinner = (Spinner) table_row.getChildAt(3);
    TextView txtDQty = (TextView) table_row.getChildAt(4);
    TextView txtDPCode = (TextView) table_row.getChildAt(5);
    TextView txtDiVal = (TextView) table_row.getChildAt(6);
    TextView txtLongDes = (TextView) table_row.getChildAt(7);
    TextView txtPcode = (TextView) table_row.getChildAt(8);


//  th3MQty.setBackgroundColor(Color.CYAN);
    txtQty.setBackgroundColor(Color.CYAN);
    //txtInvQty.setBackgroundColor(Color.CYAN);
    txtVal.setBackgroundColor(Color.CYAN);
    shelfQty.setBackgroundColor(Color.CYAN);
    spinner.setBackgroundColor(Color.CYAN);
    txtDQty.setBackgroundColor(Color.CYAN);
    txtDPCode.setBackgroundColor(Color.CYAN);
    txtDiVal.setBackgroundColor(Color.CYAN);
    txtLongDes.setBackgroundColor(Color.CYAN);
    txtPcode.setBackgroundColor(Color.CYAN);
    //txtVal.setBackgroundDrawable(getResources().getDrawable(R.drawable.table_shape));


}


@Override
public void onClick(View view) {

    if(view.getId() == 1 )
    {
        double allocationCount = 0;
        Product product = (Product) view.getTag();
        if(product.getSerialNumberRequired() != null && product.getSerialNumberRequired().equals("1"))
        {
            if(product.getLstCurrentSerial().size() > 0)
            {
                allocationCount = getCountSerialEditQty(product.getLstCurrentSerial());
            }


        }else if(product.getBatchProcessingFlag() != null && product.getBatchProcessingFlag().equals("1"))
        {
            if(product.getLstPcurrentBatch().size() > 0)
            {
                allocationCount = getCountBatchEditQty(product.getLstPcurrentBatch());
            }

        }

        if(allocationCount > 0)
        {
            callBack.viewProductSerialBatchProduct((Product) view.getTag());
        }


    }
}


/*public void detailsBtnOnClick(Product product)
{
    Bundle bundle = new Bundle();
    bundle.putParcelable("ProductOB", product);
    product.setAvailableQuantity(500);
    Intent intent = new Intent(context,InvoiceProductDetailsActivity.class);
    intent.putExtras(bundle);   
    context.startActivity(intent);
}
*/

public double getCountSerialEditQty(ArrayList<CurrentSerial> lstPcurrentSerial)
{
    double amount = 0;
    for(int j = 0 ; j < lstPcurrentSerial.size(); j ++ )
    {
        amount +=  lstPcurrentSerial.get(j).getAlocateQty();

    }

    return amount;

}

public double getCountBatchEditQty(ArrayList<CurrentSerialNumber> lstPbatchSerial)
{
    double amount = 0;
    for(int j = 0 ; j < lstPbatchSerial.size(); j ++ )
    {
        amount +=  lstPbatchSerial.get(j).getAlocateQty();

    }

    return amount;

}



}

当我调试该代码时,花了很长时间才能运行 generateTableC_AndTable_B(boolean StckValidation)方法。

如何缩短时间?

1 个答案:

答案 0 :(得分:0)

您可以使用AsynkTask填充表值,并可以使用ProgressDialog显示加载内容等待消息,当表填充时它将关闭ProgressDialog。