如何使用模型类的全球性的ArrayList后,设置的值? [英] How to set values after using model class for global ArrayList?

查看:194
本文介绍了如何使用模型类的全球性的ArrayList后,设置的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个模型类来存储我的产品名称,价格和数量,然后我将其附加到另一个片段,并尝试在我的<$显示它C $ C>的TextView 。不幸的是与的ArrayList 我不能够得到的物品的位置。以下是我的片断code。我需要帮助。

Modelclass Arr_Model.Java

 公共类Arr_Model {

    私人字符串BRAND_NAME;
    私人字符串BRNAD_PRICE;
    私人字符串数量;

    公共Arr_Model(){}

    公共字符串getBRAND_NAME(){
        返回BRAND_NAME;
    }

    公共字符串getQTY(){
        返回数量;
    }

    公共无效setBRAND_NAME(字符串BRAND_NAME){
        this.BRAND_NAME = BRAND_NAME;
    }

    公共无效setBRNAD_PRICE(字符串BRNAD_PRICE){
        this.BRNAD_PRICE = BRNAD_PRICE;
    }

    公共无效setQTY(字符串数量){
        this.QTY =数量;
    }

    公共字符串getBRNAD_PRICE(){
        返回BRNAD_PRICE;
    }
}
 

下面我从响应得到的值,并将它们存储在的ArrayList

ProductDetail.java

1)首先我是从响应中获取数据,它是产品的名称和它的价格

类LoadAlbums扩展的AsyncTask >> {     / **      *在启动后台线程显示进度对话框      * * /

  @覆盖
在preExecute保护无效(){
    super.on preExecute();
    pDialog =新ProgressDialog(All_Product_Details.this.getActivity());
    pDialog.setMessage(载入中...);
    pDialog.setIndeterminate(真正的);
    pDialog.setCancelable(假);
    pDialog.show();
}
受保护的ArrayList&LT; HashMap的&LT;字符串,字符串&GT;&GT; doInBackground(字符串参数... args){

    ServiceHandler SH =新ServiceHandler();
    字符串jsonStr = sh.makeServiceCall(USER_URL,ServiceHandler.GET);
    Log.d(回应:,&gt;中+ jsonStr);

    如果(jsonStr!= NULL){
        尝试 {


                JSONObject的jsonObj =新的JSONObject(jsonStr);
                JSONObject的PNAME = jsonObj.getJSONObject(PRODUCT_MAIN);
                的System.out.println(JSONObject的产品&GT;&GT;+ PNAME);
                JSONArray大小=新JSONArray();
                大小= pname.getJSONArray(属性);
                对于(INT J = 0; J&LT; sizes.length(); J ++){
                    JSONObject的jsonnewtwo = sizes.getJSONObject(J);
                    选项​​= jsonnewtwo.getJSONArray(选项);
                    的System.out.println(选项---+选件);

                }
                的System.out.println(属性大小+大小);
                用户名= pn​​ame.getString(USER_NAME);
                prod_price = pname.getString(PRODUCT_PRICE);
                prod_desc = pname.getString(PRODUCT_DESC);


        }赶上(JSONException E){
            e.printStackTrace();
        }
    } 其他 {
        Log.e(ServiceHandler,无法从URL中得到任何数据);
    }
    返回null;
}

保护无效onPostExecute(ArrayList中&LT; HashMap的&LT;字符串,字符串&GT;&GT;的结果){
    super.onPostExecute(结果);

    如果(pDialog.isShowing())
        pDialog.dismiss();
    如果(user_name.equals())
    {
        uname.setText(不可用);
    }
    其他
    {
        uname.setText(用户名);
    }

    如果(prod_price.equals())
    {
        pprice.setText(不可用);
    }
    其他
    {
        pprice.setText(元+ prod_price);
    }

    如果(prod_desc.equals())
    {
        general_desc.setText(不可用);
    }
    其他
    {
        general_desc.setText(Html.fromHtml(prod_desc)的ToString());
    }
 

2)然后我增加产品的数量,然后点击添加到购物车按钮,就点击添加到购物车,我将数据保存在ArrayList中。

  btn_add_to_cart.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图查看){


                    cartincrement();
                    productnams = GenericUtility.getStringFromShared prefsForKey(selected_prodname,getActivity());
                    //System.out.println("Seleced用户名=  -  =  -  =  -  =  -  =  -  =  -  = =  -  =+ productnams);
                    productprc = GenericUtility.getStringFromShared prefsForKey(selected_prodprc,getActivity());
                    //System.out.println("Seleced prodprice =  -  =  -  =  -  =  -  =  -  =  -  = =  -  =+ productprc);
                    Arr_Model产品=新Arr_Model();
                    product.setBRAND_NAME(用户名);
                    product.setBRNAD_PRICE(prod_price);
                    product.setQTY(_value.getText()的toString());
                    productArraylist.add(产品);

                    的System.out.println(TEst--+ productArraylist.get(0).getBRAND_NAME());
                }
            });
            //System.out.println("Test--+ productArraylist.get(0).getBRAND_NAME());

            mBTIncrement.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图查看){
                    增量();

                }
            });

            _decrease.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图查看){

                    递减();
                }
            });
 

3)然后我点击购物车图标,可以查看我增加其数量该项目

  relcart.setOnClickListener(新View.OnClickListener(){
                    @覆盖
                    公共无效的onClick(视图查看){

                        _value.setText(1);
                        add_to_cart这个TF =新add_to_cart这个();
                        android.support.v4.app.FragmentManager FM = getFragmentManager();
                        android.support.v4.app.FragmentTransaction英尺= fm.beginTransaction();
                        ft.replace(R.id.frame_container,TF);
                        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                        ft.addToBackStack(空);
                        ft.commit();
                    }
                });

            }
 

4)现在最后一步显示在列表视图项,下一个片段

 公共类add_to_cart这个扩展片段{

    私人按钮continue_shopping;
    私人按钮结账;
    ListView控件列表;
    私人TextView的_decrease,mBTIncrement,_value;
    私人CustomListAdapter适配器;
    私人的ArrayList&LT;字符串&GT; alst;
    私人的ArrayList&LT;字符串&GT; alstprc;
    私人字符串BNAME;
    私人的ArrayList&LT; Arr_Model&GT; productArraylist;


    公共add_to_cart这个(){}


    @覆盖
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
                             捆绑savedInstanceState){

        最后查看rootView = inflater.inflate(R.layout.list_view_addtocart,集装箱,假);

       productArraylist = All_Product_Details.productArraylist;
        // alst =新的ArrayList&LT;字符串&GT;();
       //束束= this.getArguments();
       // alst = bundle.getStringArrayList(prodnam);
        //consts.arr =新的ArrayList&LT;字符串&GT;();
        //consts.arr = alst;
       //的System.out.println(NAM--+ productArraylist);

       //捆绑bundle1 = this.getArguments();
       // alstprc = bundle1.getStringArrayList(prodprc);




/ *
        适配器=新CustomListAdapter(getActivity(),alst);
        名单=(ListView控件)rootView.findViewById(R.id.list_addtocart);
        list.setAdapter(适配器);
        adapter.notifyDataSetChanged();
       list.setOnItemClickListener(新AdapterView.OnItemClickListener(){

            @覆盖
            公共无效onItemClick(适配器视图&LT;&GT;母公司视图中查看,
                                    INT位置,长的id){


            }
        }); * /


        返回rootView;
    }

    公共类CustomListAdapter扩展了BaseAdapter {

        私人上下文的背景下;
        私人的ArrayList&LT; Arr_Model&GT;的ListData;
        //私人AQuery aQuery;

        字符串美元=\ u0024;


        公共CustomListAdapter(上下文的背景下,ArrayList的&LT; Arr_Model&GT;的ListData){
            this.context =背景;
            this.listData =的ListData;
            // aQuery =新AQuery(this.context);
        }

        @覆盖
        公众诠释getCount将(){
            返回listData.size();
        }

        @覆盖
        公共对象的getItem(INT位置){
            返回listData.get(位置);
        }

        @覆盖
        众长getItemId(INT位置){
            返回的位置;
        }

        @覆盖
        公共查看getView(最终诠释的立场,观点convertView,ViewGroup中父){
            ViewHolder持有人;
            如果(convertView == NULL){
                持有人=新ViewHolder();
                convertView = LayoutInflater.from(getActivity())膨胀(R.layout.list_item_addtocart,空)。
                holder.txtproname =(TextView中)convertView.findViewById(R.id.proname_addtocart);
                holder.txtprofilecast =(TextView中)convertView.findViewById(R.id.proprice_addtocart);

                _decrease =(TextView中)convertView.findViewById(R.id.minuss_addtocart);
                mBTIncrement =(TextView中)convertView.findViewById(R.id.plus_addtocart);
                _value =(EditText上)convertView.findViewById(R.id.edt_procount_addtocart);

                convertView.setTag(保持器);
            }其他{
                支架=(ViewHolder)convertView.getTag();
            }


            mBTIncrement.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图查看){
                    增量();
                }
            });

            _decrease.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图查看){

                    递减();
                }
            });

           / *的for(int i = 0; I&LT; productArraylist.size();我++)
            {
                holder.txtproname.setText(productArraylist.get(0));
            }

            holder.txtprofilecast.setText(元+ alstprc.get(位置)); * /
            // aQuery.id(holder.propic).image(listData.get(position).get(TAG_IMAGE),true,true,0,R.drawable.ic_launcher);

            返回convertView;
        }
        类ViewHolder {
            ImageView的propic;
            TextView的txtproname;
            TextView的txtprofilecast;

        }
 

解决方案

  relcart.setOnClickListener(新View.OnClickListener(){
    @覆盖
    公共无效的onClick(视图查看){

        _value.setText(1);
        add_to_cart这个TF =新add_to_cart这个();

        tf.setList(productArraylist);

        android.support.v4.app.FragmentManager FM = getFragmentManager();
        android.support.v4.app.FragmentTransaction英尺= fm.beginTransaction();
        ft.replace(R.id.frame_container,TF);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.addToBackStack(空);
        ft.commit();
    }
});
 

下方添加方法片段。

 公共无效SETLIST(ArrayList中&LT; Arr_Model&GT; p_productArraylist){
       productArraylist = p_productArraylist;
}
 

I've created one model class to store my product name,price and quantity,and then I attach it to another Fragment and try to display it in my TextView. Unfortunately with that ArrayList I'm not able to get the position of the items. Following is my snippet code. I need help.

Modelclass Arr_Model.Java

public class Arr_Model {

    private String BRAND_NAME;
    private String BRNAD_PRICE;
    private String QTY ;

    public Arr_Model(){}

    public String getBRAND_NAME() {
        return BRAND_NAME;
    }

    public String getQTY() {
        return QTY;
    }

    public void setBRAND_NAME(String BRAND_NAME) {
        this.BRAND_NAME = BRAND_NAME;
    }

    public void setBRNAD_PRICE(String BRNAD_PRICE) {
        this.BRNAD_PRICE = BRNAD_PRICE;
    }

    public void setQTY(String QTY) {
        this.QTY = QTY;
    }

    public String getBRNAD_PRICE() {
        return BRNAD_PRICE;
    }
}

Here I am getting the values from response and store them in arraylist

ProductDetail.java

1)First i am getting data from response,it is product name and its price

class LoadAlbums extends AsyncTask>> { /** * Before starting background thread Show Progress Dialog * */

@Override
protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(All_Product_Details.this.getActivity());
    pDialog.setMessage("Loading...");
    pDialog.setIndeterminate(true);
    pDialog.setCancelable(false);
    pDialog.show();
}
protected ArrayList<HashMap<String,String>> doInBackground(String... args) {

    ServiceHandler sh = new ServiceHandler();
    String jsonStr = sh.makeServiceCall(USER_URL, ServiceHandler.GET);
    Log.d("Response: ", "> " + jsonStr);

    if (jsonStr != null) {
        try {


                JSONObject jsonObj = new JSONObject(jsonStr);
                JSONObject pname = jsonObj.getJSONObject(PRODUCT_MAIN);
                System.out.println("Jsonobject product>>" + pname);
                JSONArray sizes = new JSONArray();
                sizes = pname.getJSONArray("attributes");
                for (int j = 0; j < sizes.length(); j++) {
                    JSONObject jsonnewtwo = sizes.getJSONObject(j);
                    option = jsonnewtwo.getJSONArray("options");
                    System.out.println("Option---" + option);

                }
                System.out.println("Attribute size" + sizes);
                user_name = pname.getString(USER_NAME);
                prod_price = pname.getString(PRODUCT_PRICE);
                prod_desc = pname.getString(PRODUCT_DESC);


        } catch (JSONException e) {
            e.printStackTrace();
        }
    } else {
        Log.e("ServiceHandler", "Couldn't get any data from the url");
    }
    return null;
}

protected void onPostExecute(ArrayList<HashMap<String,String>> result) {
    super.onPostExecute(result);

    if (pDialog.isShowing())
        pDialog.dismiss();
    if(user_name.equals(""))
    {
        uname.setText("Not Available");
    }
    else
    {
        uname.setText(user_name);
    }

    if(prod_price.equals(""))
    {
        pprice.setText("Not Available");
    }
    else
    {
        pprice.setText(dollars+prod_price);
    }

    if(prod_desc.equals(""))
    {
        general_desc.setText("Not Available");
    }
    else
    {
        general_desc.setText(Html.fromHtml(prod_desc).toString());
    }

2)then i increase product quantity and click on add to cart button,on click of add to cart i am saving data in arraylist..

 btn_add_to_cart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    cartincrement();
                    productnams = GenericUtility.getStringFromSharedPrefsForKey("selected_prodname", getActivity());
                    //System.out.println("Seleced user name=-=-=-=-=-=-==-=" + productnams);
                    productprc = GenericUtility.getStringFromSharedPrefsForKey("selected_prodprc", getActivity());
                    //System.out.println("Seleced prodprice=-=-=-=-=-=-==-=" + productprc);
                    Arr_Model product = new Arr_Model();
                    product.setBRAND_NAME(user_name);
                    product.setBRNAD_PRICE(prod_price);
                    product.setQTY(_value.getText().toString());
                    productArraylist.add(product);

                    System.out.println("TEst--" + productArraylist.get(0).getBRAND_NAME());
                }
            });
            //System.out.println("Test--" + productArraylist.get(0).getBRAND_NAME());

            mBTIncrement.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    increment();

                }
            });

            _decrease.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    decrement();
                }
            });

3)then i click on cart icon to view which item i added with its quantity

relcart.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                        _value.setText("1");
                        Add_to_cart tf = new Add_to_cart();
                        android.support.v4.app.FragmentManager fm = getFragmentManager();
                        android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
                        ft.replace(R.id.frame_container, tf);
                        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                        ft.addToBackStack(null);
                        ft.commit();
                    }
                });

            }

4)now final step to display items in listview,to next fragment

public class Add_to_cart extends Fragment {

    private Button continue_shopping;
    private Button checkout;
    ListView list;
    private TextView _decrease,mBTIncrement,_value;
    private CustomListAdapter adapter;
    private ArrayList<String> alst;
    private ArrayList<String> alstprc;
    private String bname;
    private ArrayList<Arr_Model> productArraylist;


    public Add_to_cart(){}


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View rootView = inflater.inflate(R.layout.list_view_addtocart, container, false);

       productArraylist = All_Product_Details.productArraylist;
        // alst=new ArrayList<String>();
       // Bundle bundle = this.getArguments();
       // alst = bundle.getStringArrayList("prodnam");
        //consts.arr = new ArrayList<String>();
        //consts.arr = alst;
       // System.out.println("NAM--" + productArraylist);

       // Bundle bundle1 = this.getArguments();
       // alstprc = bundle1.getStringArrayList("prodprc");




/*
        adapter = new CustomListAdapter(getActivity(),alst);
        list=(ListView)rootView.findViewById(R.id.list_addtocart);
        list.setAdapter(adapter);
        adapter.notifyDataSetChanged();
       list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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


            }
        });*/


        return rootView;
    }

    public class CustomListAdapter extends BaseAdapter {

        private Context context;
        private ArrayList<Arr_Model> listData;
        //private AQuery aQuery;

        String dollars="\u0024";


        public CustomListAdapter(Context context,ArrayList<Arr_Model> listData) {
            this.context = context;
            this.listData=listData;
            // aQuery = new AQuery(this.context);
        }

        @Override
        public int getCount() {
            return listData.size();
        }

        @Override
        public Object getItem(int position) {
            return listData.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = LayoutInflater.from(getActivity()).inflate(R.layout.list_item_addtocart, null);
                holder.txtproname = (TextView) convertView.findViewById(R.id.proname_addtocart);
                holder.txtprofilecast = (TextView) convertView.findViewById(R.id.proprice_addtocart);

                _decrease = (TextView)convertView.findViewById(R.id.minuss_addtocart);
                mBTIncrement = (TextView)convertView.findViewById(R.id.plus_addtocart);
                _value = (EditText)convertView.findViewById(R.id.edt_procount_addtocart);

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


            mBTIncrement.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    increment();
                }
            });

            _decrease.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    decrement();
                }
            });

           /* for(int i=0;i<productArraylist.size();i++)
            {
                holder.txtproname.setText(productArraylist.get(0));
            }

            holder.txtprofilecast.setText(dollars+alstprc.get(position));*/
            // aQuery.id(holder.propic).image(listData.get(position).get(TAG_IMAGE),true,true,0,R.drawable.ic_launcher);

            return convertView;
        }
        class ViewHolder{
            ImageView propic;
            TextView txtproname;
            TextView txtprofilecast;

        }

解决方案

relcart.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        _value.setText("1");
        Add_to_cart tf = new Add_to_cart();

        tf.setList(productArraylist);

        android.support.v4.app.FragmentManager fm = getFragmentManager();
        android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.frame_container, tf);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.addToBackStack(null);
        ft.commit();
    }
});

Add below method in Fragment.

public void setList(ArrayList<Arr_Model> p_productArraylist) {
       productArraylist = p_productArraylist;
}

这篇关于如何使用模型类的全球性的ArrayList后,设置的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆