Actually what i am doing is giving user option to increment decrements
products on all list-view items as shown in attached picture
I am able to take listview item name,price to next screen but how should
take the quantity value to next screen.
the quantity updation code is done in the adapter of products
************************************************************************
ItemListBaseAdapter.java
public class ItemListBaseAdapter extends ArrayAdapter<RowItem> {
LayoutInflater mInflater;
Context context;
ViewHolder holder;
public ItemListBaseAdapter(Context context, int resourceId,
List<RowItem> rowItems) {
super(context, resourceId, rowItems);
mSelectedItemsIds = new SparseBooleanArray();
this.context = context;
}
/* private view holder class */
private class ViewHolder {
TextView txtTitle, txtPrice;
TextView txtDesc;
Button add, sub;
}
public View getView(final int position, View convertView,ViewGroupparent)
{
holder = null;
RowItem rowItem = getItem(position);
mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_details_view, null);
holder = new ViewHolder();
holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
holder.txtPrice = (TextView) convertView.findViewById(R.id.pricee);
holder.add = (Button) convertView.findViewById(R.id.button1);
holder.sub = (Button) convertView.findViewById(R.id.button2);
holder.add_to = (Button) convertView.findViewById(R.id.button3);
convertView.setTag(holder);
} else
holder = (ViewHolder) convertView.getTag();
holder.txtPrice.setText("Price $ " + rowItem.getPrice());
holder.txtTitle.setText(rowItem.getTitle());
holder.txtTitle.setTag(position);
holder.add.setTag(position);
holder.sub.setTag(position);
final ViewHolder viewHolderFinal = holder;
final RowItem finalRowItem = rowItem;
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int quantity = finalRowItem.getQuantity(); // get the quantity
finalRowItem.setQuantity(quantity + 1); // update it by adding 1
viewHolderFinal.txtDesc.setText(finalRowItem.getDesc());
}
});
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int quantity = finalRowItem.getQuantity(); // get the quantity
// for this row item
finalRowItem.setQuantity(quantity - 1); // update it by
// subtracting 1
viewHolderFinal.txtDesc.setText(finalRowItem.getDesc());
}
});
return convertView;
}
ProductList.java
import java.util.ArrayList;
import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.AlertDialog;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.ActionMode;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class ProductList extends Fragment {
ItemListBaseAdapter apage;
ListView userlist;
RowItem item;
ArrayList<RowItem> sub_cat_arr = new ArrayList<RowItem>();
String u = Login.url + "Products/API/?f=" + "get_product&cat=", id, level;
Button button_show_cart;
int global_position;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ViewrootView=inflater.inflate
(R.layout.pro_list,container, false);
userlist = (ListView) rootView.findViewById(android.R.id.list);
button_show_cart = (Button) rootView.findViewById(R.id.button_add);
new subcat_data().execute();
apage = new ItemListBaseAdapter(getActivity(),
R.layout.item_details_view, sub_cat_arr);
userlist.setAdapter(apage);
// userlist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
apage.clear();
button_show_cart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position = (Integer) v.getTag();
//**********************************
unable to get per listview quantity here to take to next screen
**********************************///
Intent x = new Intent(getActivity(), Screen2.class);
startActivity(x);
}
});
return rootView;
}
class subcat_data extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
protected void onPreExecute() {
dialog = new ProgressDialog(getActivity(),
AlertDialog.THEME_HOLO_LIGHT);
dialog.setMessage("Please wait a moment");
dialog.show();
dialog.setCancelable(false);
}
protected Void doInBackground(Void... arg0) {
ServiceHandler sh = new ServiceHandler();
String jsonStr = sh.makeServiceCall(u, ServiceHandler.GET);
Log.d("Response: ", "> " + jsonStr);
try {
JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
RowItem actor = new RowItem();
String name = jsonobject.getString("name");
String price = jsonobject.getString("price");
actor.setTitle(name);
actor.setPrice(price);
sub_cat_arr.add(actor);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
dialog.cancel();
if (ServiceHandler.response != null) {
apage.notifyDataSetChanged();
} else {
Toast.makeText(getActivity(),
"error",
Toast.LENGTH_SHORT).show();
}
}
}
}
Please suggest friends what to do?
Thanks
[1]: http://i.stack.imgur.com/HmuzT.png