EditText in GridView : How to get value from Multiple EditText

二次信任 提交于 2019-11-29 02:37:20

Do this way..

JSONObject output = new JSONObject();

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

    View view = convertView;
    ViewHolder holder;

    if (convertView == null) {
        // get reference to the row
        view = super.getView(position, convertView, parent);

        holder = new ViewHolder();
        holder.prodImage = (ImageView) view.findViewById(R.id.productImage);
        holder.prodName = (TextView) view.findViewById(R.id.productName);
        holder.prodQty = (EditText) view.findViewById(R.id.productQuantityValue);
        holder.prodRate = (EditText) view.findViewById(R.id.productRateValue);
        holder.prodDisc = (EditText) view.findViewById(R.id.productDiscountValue);

        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    productRateValue = cursor.getDouble(productCursor.getColumnIndex("rate"));
    productDiscountValue = cursor.getDouble(productCursor.getColumnIndex("discount"));
    String path = productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_IMAGES));
    mImageLoader.DisplayImage(path, holder.prodImage);

    holder.prodName.setText(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_NAME)));
    holder.prodQty.setText("");
    holder.prodRate.setText(String.valueOf(productRateValue));
    holder.prodDisc.setText(String.valueOf(productDiscountValue));
    holder.prodRate.setFocusable(isRateEditable);
    holder.prodRate.setEnabled(isRateEditable);
    holder.prodDisc.setFocusable(isDiscountEditable);
    holder.prodDisc.setEnabled(isDiscountEditable);

    /* For set Focus on Next */
    if (isRateEditable)
        holder.prodQty.setNextFocusDownId(R.id.productRateValue);
    else if (isDiscountEditable)
        holder.prodQty.setNextFocusDownId(R.id.productDiscountValue);

    if (isDiscountEditable)
        holder.prodRate.setNextFocusDownId(R.id.productDiscountValue);

    holder.prodDisc.setNextFocusDownId(R.id.productQuantityValue);
    holder.prodQty.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            output.put(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_NAME)),s);
        }
    });
    return view;
}

public class ViewHolder {
    ImageView prodImage;
    TextView prodName;
    EditText prodRate;
    EditText prodQty;
    EditText prodDisc;
}

you will get output jsonobject with prodname and it's entered qty here.

Pratik Butani AndroidDev

With My Question i am success to save data in JSONArray but got Again This Problem

and Finally i found solution:

I have used BaseAdapter instead of SimpleCursorAdapter

MyGridViewAdapter.java

class MyGridViewAdapter extends BaseAdapter {

    private ArrayList<ProductItems> productItemList;
    private LayoutInflater inflater = null;

    ViewHolder holder;

    ImageLoader mImageLoader;

    int concatid;

    String productQtyValue;
    Double productRateValue;
    Double productDiscountValue;

    int tempId = 0;

    public MyGridViewAdapter(ArrayList<ProductItems> productItemsList) {
        // TODO Auto-generated constructor stub
        this.productItemList = productItemsList;
        mImageLoader = new ImageLoader(context);
        inflater =(LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return productItemList.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return productItemList.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view = convertView;

        if(convertView == null)
        {
            view = inflater.inflate(R.layout.list_product_view, null);
            holder = new ViewHolder();

        }else
        {
            holder = (ViewHolder) view.getTag();
        }

        ProductItems currentProductItem = productItemList.get(position);

        holder.prodId = currentProductItem.getProdId();
        holder.prodImagePath = currentProductItem.getProdImagePath();
        holder.prodDesc = currentProductItem.getProdDesc();

        //Image
        holder.prodImage = (ImageView) view.findViewById(R.id.productImage);
        mImageLoader.DisplayImage(holder.prodImagePath, holder.prodImage);
        holder.prodImage.setTag(holder);

        holder.prodImage.setOnClickListener(new OnClickListener() {

            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                ViewHolder tempHolder = (ViewHolder)v.getTag();

                AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
                alertDialog.setTitle(tempHolder.prodName.getText());
                LayoutInflater inflater = getActivity().getLayoutInflater();

                // Inflate and set the layout for the dialog
                // Pass null as the parent view because its going in the dialog
                // layout
                View view = inflater.inflate(R.layout.custom_image, null);

                ImageView image = (ImageView) view.findViewById(R.id.dialogImageView);
                mImageLoader.DisplayImage(tempHolder.prodImagePath, image);

                ((TextView)view.findViewById(R.id.dialogTextViewDesc)).setText(tempHolder.prodDesc);

                alertDialog.setView(view);

                alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // here you can add functions
                        dialog.dismiss();
                    }
                });

                alertDialog.show();
            }
        });

        holder.prodName = (TextView) view.findViewById(R.id.productName);
        holder.prodName.setText(currentProductItem.getProdName());

        holder.prodQty = (EditText) view.findViewById(R.id.productQuantityValue);
        holder.prodQty.setTag(holder);

        holder.prodQty.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // TODO Auto-generated method stub
                if(!hasFocus)
                {
                    ViewHolder viewHolder = (ViewHolder) v.getTag();
                    saveData(viewHolder);
                }
            }
        });

        holder.prodRate = (EditText) view.findViewById(R.id.productRateValue);
        holder.prodRate.setTag(holder);

        holder.prodDisc = (EditText) view.findViewById(R.id.productDiscountValue);
        holder.prodDisc.setTag(holder);

        /** First check whether value of Saved product Array is >0 or not..*/
        Log.d("msg", "Saved Prod : "+allProductArray.length());
        if(allProductArray.length() <= 0)
        {
            productRateValue = currentProductItem.getProdRate();
            productDiscountValue = currentProductItem.getProdDisc();
        }

        /* Filling up value if previously entered... */
        for (int array = 0; array < allProductArray.length(); array++) {
            try {
                if(allProductArray.getJSONObject(array).getInt("prodid") == holder.prodId)
                {
                    productRateValue = allProductArray.getJSONObject(array).getDouble("rate");
                    productDiscountValue = allProductArray.getJSONObject(array).getDouble("discount");
                    productQtyValue = allProductArray.getJSONObject(array).getString("qty");
                    holder.prodQty.setText(String.valueOf(productQtyValue));
                    break;
                }else
                {
                    productRateValue = currentProductItem.getProdRate();
                    productDiscountValue = currentProductItem.getProdDisc();

                    holder.prodQty.setText("");
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                Log.e("msg", "JSON error in bindView : " + e.getMessage());
            }
        }

        //holder.prodQty.setText("");
        holder.prodRate.setText(String.valueOf(productRateValue));
        holder.prodDisc.setText(String.valueOf(productDiscountValue));

        holder.prodRate.setFocusable(isRateEditable);
        holder.prodRate.setEnabled(isRateEditable);

        holder.prodDisc.setFocusable(isDiscountEditable);
        holder.prodDisc.setEnabled(isDiscountEditable);

        // For set Focus on Next
        if(isRateEditable)
            holder.prodQty.setNextFocusDownId(R.id.productRateValue);
        else if(isDiscountEditable)
            holder.prodQty.setNextFocusDownId(R.id.productDiscountValue);

        if(isDiscountEditable)
            holder.prodRate.setNextFocusDownId(R.id.productDiscountValue);

        holder.prodDisc.setNextFocusDownId(R.id.productQuantityValue);

        int catid = currentProductItem.getProdId();
        concatid = Integer.parseInt(catid + "" + tempId++);

        Log.d("msg", "Inner Concat ID :"+concatid);

        view.setId(concatid);
        view.setTag(holder);

        return view;
    }

    public class ViewHolder{
        int prodId;
        String prodImagePath;
        String prodDesc;
        ImageView prodImage;
        TextView prodName;
        EditText prodRate;
        EditText prodQty;
        EditText prodDisc;
    }
}

I have converted Cursor in to ArrayList<ProductItems>:

if (!dbHelper.db.isOpen())
dbHelper.open();

productCursor = dbHelper.getProduct(companyid, categoryid, isDistributor);

//                  String[] cols = new String[] { DatabaseHelper.PRODUCT_IMAGES, DatabaseHelper.PRODUCT_NAME, "rate", "discount"};
//                  int[]   views = new int[] { R.id.productImage, R.id.productName, R.id.productRateValue, R.id.productDiscountValue};

Log.d("msg", "Count of Product : "+productCursor.getCount());

prodItemsArrayList.clear();

if (productCursor != null && productCursor.getCount() > 0) {

    ProductItems items;

    for(productCursor.moveToFirst(); !productCursor.isAfterLast(); productCursor.moveToNext())
    {
        items = new ProductItems();

        items.setProdId(productCursor.getInt(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_SERVER_ID)));
        items.setProdName(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_NAME)));
        items.setProdImagePath(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_IMAGES)));
        items.setProdQty("");
        items.setProdRate(productCursor.getDouble(productCursor.getColumnIndex("rate")));
        items.setProdDisc(productCursor.getDouble(productCursor.getColumnIndex("discount")));
        items.setProdDesc(productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_DESC)).equals("null") ? "" : productCursor.getString(productCursor.getColumnIndex(DatabaseHelper.PRODUCT_DESC)));

        prodItemsArrayList.add(items);
    }

    //Now create an array adapter and set it to display using our row
    //passing cursor with zero rows and displaying error message
    adapter = new MyGridViewAdapter(prodItemsArrayList);
    adapter.notifyDataSetChanged();
    productTable.setAdapter(adapter);

    /* HIDE ERROR MSG */
    (view.findViewById(R.id.productIfNoAvailable)).setVisibility(View.GONE);
} else {
    /* SHOW ERROR MSG */
    (view.findViewById(R.id.productIfNoAvailable)).setVisibility(View.VISIBLE);
    adapter.notifyDataSetChanged();
    adapter.notifyDataSetInvalidated();
}

Any Suggestion would be Appreciated :)

Thanks...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!