如何使用模型类的全球性的ArrayList后,设置的值? [英] How to set values after using model class for global 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(属性大小+大小);
用户名= pname.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屋!