Как получить значение каждого предмета из Recyclerview и сохранить его в локальной базе данных - PullRequest
2 голосов
/ 10 июля 2019

1.У меня есть утилита, как элементы заказа электронной корзины / продуктов, в которых я добавляю количество каждого элемента с помощью кнопок (+) и (-), тогда как я могу получить значение каждого элемента с названием элемента, количество предметов и количество.

2.Как я могу сохранить полученные значения из представления переработчика в локальной базе данных.

// Это мой класс адаптера

package com.myapplication.chaiwalacustomer.adapter;

import android.content.Context;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.myapplication.chaiwalacustomer.R;
import com.myapplication.chaiwalacustomer.model.TeaListPOJO;
import com.myapplication.chaiwalacustomer.utils.AppConstants;
import com.myapplication.chaiwalacustomer.utils.Base64;

import java.util.List;


public class TeaListAdapter extends RecyclerView.Adapter<TeaListAdapter.MyViewHolder> {

        //private int num=0;
        private List<TeaListPOJO> teaItemList;
        private Context mContext;
        private Cursor cursor;

        public class MyViewHolder extends RecyclerView.ViewHolder {
            public TextView tvitemName, tvitemRate,number;
            public ImageView ivItemImg;
            public Button btnIncrease,btnDecrease;
            RecyclerView.ViewHolder holder;


            public MyViewHolder(View view) {
                super(view);
                tvitemName = (TextView) view.findViewById(R.id.txt_item_name);
                tvitemRate = (TextView) view.findViewById(R.id.txt_item_price);
                ivItemImg= (ImageView) view.findViewById (R.id.iv_item);
                number=(TextView) view.findViewById (R.id.integer_number);
                btnIncrease =view.findViewById(R.id.btn_increase);
                btnDecrease = view.findViewById(R.id.btn_decrease);

            }
        }


        public TeaListAdapter(List<TeaListPOJO> teaItemList) {
            this.mContext=mContext;
            this.cursor=cursor;
            this.teaItemList = teaItemList;
        }

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.rv_placeorder_items, parent, false);

            return new MyViewHolder (itemView);
        }

        @Override
        public void onBindViewHolder(final MyViewHolder holder, final int position) {

            TeaListPOJO tealist = teaItemList.get(position);
            holder.tvitemName.setText(tealist.getItemName ());
            holder.tvitemRate.setText(AppConstants.INDIAN_RUPEE_SIGN.concat (tealist.getItemRate ()));
           // holder.number.setText (tealist.getQty ());
            //num=Integer.parseInt (tealist.getQty ());

            //String title = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.title)).getText().toString();

            holder.btnIncrease.setOnClickListener (new View.OnClickListener () {
                @Override
                public void onClick(View view) {
                    int num=0;
                    try{

                        num = Integer.parseInt(holder.number.getText().toString());
                    }catch(Exception e) {
                        num = 0;
                    }
                    num++;
                    holder.number.setText ((num+""));

                    notifyDataSetChanged();
                }
            });
            holder.btnDecrease.setOnClickListener (new View.OnClickListener () {
                @Override
                public void onClick(View view) {
                    int num=0;
                    try{

                        num = Integer.parseInt(holder.number.getText().toString());
                    }catch(Exception e) {
                        num = 0;
                    }
                    if(num>0)
                        num--;
                    holder.number.setText ((num+""));
                    notifyDataSetChanged();
                }
            });

            byte[] decodedString = new byte[0];
            try {

                decodedString = Base64.decode(tealist.getImageStr(), Base64.DEFAULT);
                // tenantModelPOJO.setLogo(decodedString);
                Bitmap bmp = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
                holder.ivItemImg.setImageBitmap(Bitmap.createScaledBitmap(bmp, 50, 50,false));
            } catch (Exception e) {
                e.printStackTrace();
            }

        }




        @Override
        public int getItemCount() {

            return teaItemList.size();
        }
    }

// Это моя деятельность

public class PlaceOrderActivity extends AppCompatActivity implements AppConstants, View.OnClickListener, WLAPIcalls.OnAPICallCompleteListener {

    private List<TeaListPOJO> teaList = new ArrayList<> ();
    private RecyclerView recyclerView;
    private TeaListAdapter mAdapter;
    private View view;

    int count=0;


    private Context mContext = PlaceOrderActivity.this;
    private int itemCount;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_place_order);

        setRecyclerView (view);
        getallTeaItems();
        // prepareMovieData();
    }



    List<TeaListPOJO> getTeaItemList(String str) {
        Gson gson = new Gson ();
        Type listType = new TypeToken<List<TeaListPOJO>> () {
        }.getType ();
        List<TeaListPOJO> myModelList = gson.fromJson (str, listType);
        return myModelList;
    }

    private List<TeaListPOJO> getallTeaItems() {
        if (new AppCommonMethods (mContext).isNetworkAvailable ()) {
            WLAPIcalls mAPIcall = new WLAPIcalls (mContext, getString (R.string.getTeaItem), this);
            mAPIcall.GetTeaItemList ();
        } else {
            Toast.makeText (mContext, R.string.no_internet, Toast.LENGTH_SHORT).show ();
        }
        return null;
    }

    void setRecyclerView(View view){
        recyclerView = (RecyclerView) findViewById (R.id.recycler_view);

        mAdapter = new TeaListAdapter (teaList);
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager (getApplicationContext ());
        recyclerView.setLayoutManager (mLayoutManager);
        recyclerView.setItemAnimator (new DefaultItemAnimator ());
        recyclerView.setAdapter (mAdapter);
    }

    @Override
    public void onClick(View view) {
        for(int i=0;i<itemCount;i++)
        {
            view=recyclerView.getChildAt(i); // This will give you entire row(child) from RecyclerView
            if(view!=null)
            {
                EditText editText= (EditText) view.findViewById(R.id.et_time);
                String text=editText.getText().toString();
                if (text.equals(i)){
                    // Do your stuff, after comparison
                }
            }
        }

    }

    @Override
    public void onAPICallCompleteListner(Object item, String flag, String result) throws JSONException {
        if (getString (R.string.getTeaItem).equals (flag)) {
            Log.e ("Result", result);
            teaList = getTeaItemList (result);
            setRecyclerView (view);

        }

    }
}

1 Ответ

0 голосов
/ 10 июля 2019

Создайте переменную, такую ​​как selectedMap типа HashMap<Object,Integer>. Как только вы увеличите счет, используйте условие

HashMap<Object,Integer> selectedMap = new HashMap();

        //In increase count onClick
        if(selectedMap.containsKey(teaList)) {
            int prevCount = selectedMap.get(teaList);
            selectedMap.put(teaList, prevCount++);
        } else {
            selectedMap.put(teaList, 1);
        }

        //In decrease count onClick
        if(selectedMap.containsKey(teaList)) {
            int prevCount = selectedMap.get(teaList);
            if(prevCount == 1)
                selectedMap.remove(teaList);
            else
                selectedMap.put(teaList, prevCount--);
        }

Теперь на этой карте есть все выбранные предметы. Если вы хотите сохранить элемент в БД, просто выполните итерацию этого HashMap, и значение каждого элемента даст вам количество элементов.

Что касается хранения данных в базе данных, сначала определите тип базы данных, которую вы собираетесь использовать, а затем обратитесь за помощью к тому, как данные будут вставлены и извлечены в соответствии с вашими требованиями.

...