I have a problem, changing from the buttons to increase the value of the quantity textview, in the list also change others that I am not interacting with.
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.RecyclerView;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ScrollView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.TextHttpResponseHandler;
import com.squareup.picasso.Picasso;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONObject;
import java.text.DecimalFormat;
import java.util.List;
import java.util.Locale;
/**
* Created by roberthdudiver on 8/2/17.
*/
public class ProductosAdapter extends BaseAdapter implements ListAdapter {
private JSONArray jsonArray;
private Context context;
public ProductosAdapter( JSONArray jsonArray, Context con) {
assert jsonArray != null;
context=con;
this.jsonArray = jsonArray;
}
@Override public int getCount() {
if(null==jsonArray)
return 0;
else
return jsonArray.length();
}
@Override public JSONObject getItem(int position) {
if(null==jsonArray) return null;
else
return jsonArray.optJSONObject(position);
}
@Override public long getItemId(int position) {
JSONObject jsonObject = getItem(position);
return jsonObject.optLong("id");
}
JSONObject json_data ;
View ConvertView;
static class ViewHolder {
ImageView img;
TextView text;
TextView desc;
TextView cantidad;
TextView precio;
int posicion=1;
ScrollView mScrollView;
SeekBar seekBar;
float preciofl;
Button Botonincrementar;
Button Botondecrementar;
ImageButton Boton;
}
private static final String TAG = "CustomAdapter";
ViewHolder Holder;
@Override public View getView(int position, View convertView, ViewGroup parent) {
ConvertView=convertView;
LayoutInflater inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
Log.v(TAG, "in getView for position " + position + ", convertView is "
+ ((convertView == null) ? "null" : "being recycled"));
if (ConvertView == null) {
ConvertView = inflater.inflate(R.layout.lista_productos, parent, false);
Holder = new ViewHolder();
//inflater.inflate(R.layout.lista_productos, null);
Holder.desc = (TextView) ConvertView.findViewById(R.id.titulo);
Holder.cantidad = (TextView) ConvertView.findViewById(R.id.txtcantidad);
Holder.Boton = (ImageButton) ConvertView.findViewById(R.id.botonagregar);
Holder.text = (TextView) ConvertView.findViewById(R.id.h1);
Holder.precio = (TextView) ConvertView.findViewById(R.id.precio);
Holder.img = (ImageView) ConvertView.findViewById(R.id.img);
Holder.seekBar = (SeekBar) ConvertView.findViewById(R.id.barra);
Holder.Botonincrementar =(Button) ConvertView.findViewById(R.id.increment);
Holder.Botondecrementar =(Button) ConvertView.findViewById(R.id.decrement);
ConvertView.setTag(Holder);
}
else {
Holder = (ViewHolder) ConvertView.getTag();
}
Holder.seekBar.setMax(10);
Holder.Boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder es = (ViewHolder)v.getTag();
ObjetoProductoPcarrito Obj = new ObjetoProductoPcarrito();
Obj.nombre=es.text.getText().toString();
Obj.cantidad= Float.parseFloat(es.cantidad.getText().toString());
Obj.precio=es.preciofl;
if( Obj.cantidad>0) {
Utilidades.ListaActual().add(Obj);
}
TextView infocarrito= (TextView)Utilidades.ContextoPrincipalCarrito.findViewById(R.id.precio);
String tot=String.valueOf(Utilidades.TotalCarrito());
infocarrito.setText( tot+" Bs.");
es.cantidad.setText("1");
es.seekBar.setProgress(1);
es.posicion=1;
}
});
JSONObject json_data1 = getItem(position);
Holder.Botondecrementar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder es = (ViewHolder)v.getTag();
int nume=Integer.parseInt(es.cantidad.getText().toString());
if(nume>=2) {
nume--;
es.cantidad.setText(String.valueOf(nume));
}
}
});
Holder.Botonincrementar.setOnClickListener(Incrementarlistener);
Holder.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
ViewHolder es = (ViewHolder)seekBar.getTag();
try {
es.posicion=i;
es.cantidad.setText(Integer.toString(i));
}catch (Exception e){
Log.e("Error", "unexpected JSON exception", e);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
if(null!=json_data1 ) {
try {
String jj = json_data1.getString("id");
// try parse the string to a JSON object
try {
String id = json_data1.getString("id");
String description = json_data1.getString("description");
String name = json_data1.getString("name");
String imagen = json_data1.getString("product_images");
String preciop = json_data1.getString("product_price");
float litersOfPetrol = Float.parseFloat(preciop);
DecimalFormat df = new DecimalFormat("0.00");
df.setMaximumFractionDigits(2);
preciop = df.format(litersOfPetrol);
try {
Holder.img.setTag("img-" + id);
Holder.text.setTag("text-" + id);
Holder.cantidad.setTag("cantidad-" + id);
Holder.seekBar.setTag(Holder);
Holder.seekBar.setProgress(Holder.posicion);
Holder.precio.setTag("precio-" + id);
Holder.Botonincrementar.setTag(Holder);
Holder.Botondecrementar.setTag(Holder);
Holder.Boton.setTag(Holder);
} catch (Exception e) {
Log.e("Error", "unexpected JSON exception", e);
}
Holder.text.setText(name);
Holder.desc.setText(Utilidades.LimpiarHtml(description));
Holder.text.setText(name);
Holder.preciofl = Float.parseFloat(preciop.replace(',', '.'));
Holder.precio.setText(preciop + " Bs.");
Holder.desc.setMovementMethod(new ScrollingMovementMethod());
System.out.println("Position ["+position+"]");
// String imagen="http://"+ Utilidades.Url()+"/img/p/"+idimagen+"/"+idimagen+"-medium_default.jpg";
// Picasso.with(convertView.getContext()).load(imagen).into(img);
int es = R.drawable.precarga;
Picasso.with(ConvertView.getContext())
.load(imagen)
.placeholder(es)
.into(Holder.img);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
} catch (JSONException e) {
// Log.e("MYAPP", "unexpected JSON exception", e);
// Do something to recover ... or kill the app.
}
}
return ConvertView;
}
private View.OnClickListener Incrementarlistener = new View.OnClickListener()
{
@Override
public void onClick(View v) {
ViewHolder es = (ViewHolder)v.getTag();
int nume=Integer.parseInt(es.cantidad.getText().toString());
if(nume<=99) {
nume++;
es.cantidad.setText(String.valueOf(nume));
}
}
};
}
I change your class and whit this, you resolve the problem.
import android.content.Context;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.DecimalFormat;
import java.util.ArrayList;
/**
* Created by Roberth on 15/3/2017.
*/
public class ProductosAdapterNew extends BaseAdapter {
private JSONArray jsonArray;
private LayoutInflater inflater;
private boolean[] itemSelection;
private int[] itemvalues;
private String[] itemvalues2;
private Context context;
public ProductosAdapterNew(JSONArray jsonArray, Context con) {
assert jsonArray != null;
context=con;
this.jsonArray = jsonArray;
}
@Override public int getCount() {
if(null==jsonArray)
return 0;
else {
int tamano=jsonArray.length();
this.itemSelection = new boolean[tamano];
this.itemvalues = new int[tamano];
this.itemvalues2 = new String[tamano];
return jsonArray.length();
}
}
@Override public JSONObject getItem(int position) {
if(null==jsonArray) return null;
else {
return jsonArray.optJSONObject(position);
}
}
@Override public long getItemId(int position) {
JSONObject jsonObject = getItem(position);
return jsonObject.optLong("id");
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.lista_productos, parent, false);
final ProductosHolder holder = new ProductosHolder();
holder.seekBar = (SeekBar) convertView.findViewById(R.id.barra);
holder.cantidad = (TextView) convertView.findViewById(R.id.txtcantidad);
holder.desc = (TextView) convertView.findViewById(R.id.titulo);
holder.Boton = (ImageButton) convertView.findViewById(R.id.botonagregar);
holder.text = (TextView) convertView.findViewById(R.id.h1);
holder.precio = (TextView) convertView.findViewById(R.id.precio);
holder.img = (ImageView) convertView.findViewById(R.id.img);
holder.Botonincrementar =(Button) convertView.findViewById(R.id.increment);
holder.Botondecrementar =(Button) convertView.findViewById(R.id.decrement);
convertView.setTag(holder);
holder.Boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjetoProductoPcarrito Obj = new ObjetoProductoPcarrito();
Obj.nombre=holder.text.getText().toString();
Obj.cantidad= Float.parseFloat(holder.cantidad.getText().toString());
Obj.precio=holder.preciofl;
if( Obj.cantidad>0) {
Utilidades.ListaActual().add(Obj);
}
TextView infocarrito= (TextView)Utilidades.ContextoPrincipalCarrito.findViewById(R.id.precio);
String tot=String.valueOf(Utilidades.TotalCarrito());
infocarrito.setText( tot+" Bs.");
holder.cantidad.setText("1");
holder.seekBar.setProgress(1);
holder.posicion=1;
}
});
holder.Botondecrementar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int nume=Integer.parseInt(holder.cantidad.getText().toString());
if(nume>=1) {
nume--;
itemvalues[position]=nume;
itemvalues2[position] = String.valueOf(nume);
holder.cantidad.setText(itemvalues2[position]);
holder.seekBar.setProgress(itemvalues[position]);
}
}
});
holder.Botonincrementar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int nume=Integer.parseInt(holder.cantidad.getText().toString());
if(nume<=99) {
nume++;
itemvalues[position]=nume;
itemvalues2[position] = String.valueOf(nume);
holder.cantidad.setText(itemvalues2[position]);
holder.seekBar.setProgress(itemvalues[position]);
}
}
});
holder.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
itemvalues[position] = holder.seekBar.getProgress();
itemvalues2[position] = String.valueOf(holder.seekBar.getProgress());
holder.cantidad.setText(itemvalues2[position]);
// ProductosHolder es = (ProductosHolder) seekBar.getTag();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
try {
JSONObject json_data1 = getItem(position);
if (null != json_data1) {
try {
String jj = json_data1.getString("id");
// try parse the string to a JSON object
try {
String id = json_data1.getString("id");
String description = json_data1.getString("description");
String name = json_data1.getString("name");
String imagen = json_data1.getString("product_images");
String preciop = json_data1.getString("product_price");
float litersOfPetrol = Float.parseFloat(preciop);
DecimalFormat df = new DecimalFormat("0.00");
df.setMaximumFractionDigits(2);
preciop = df.format(litersOfPetrol);
holder.seekBar.setProgress(itemvalues[position]);
if(itemvalues2[position]!=null) {
holder.cantidad.setText(String.valueOf(itemvalues2[position]));
}
else {
holder.cantidad.setText("1");
}
holder.seekBar.setMax(10);
holder.text.setText(name);
holder.desc.setText(Utilidades.LimpiarHtml(description));
holder.text.setText(name);
holder.preciofl = Float.parseFloat(preciop.replace(',', '.'));
holder.precio.setText(preciop + " Bs.");
holder.desc.setMovementMethod(new ScrollingMovementMethod());
System.out.println("Position ["+position+"]");
// String imagen="http://"+ Utilidades.Url()+"/img/p/"+idimagen+"/"+idimagen+"-medium_default.jpg";
// Picasso.with(convertView.getContext()).load(imagen).into(img);
int es = R.drawable.precarga;
Picasso.with(convertView.getContext())
.load(imagen)
.placeholder(es)
.into(holder.img);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
} catch (Exception e) {
}
}
holder.seekBar.setTag(holder);
} catch (Exception es) {
// Log.e("MYAPP", "unexpected JSON exception", e);
// Do something to recover ... or kill the app.
}
return convertView;
}
public int getItemsLength() {
if(itemSelection == null) return 0;
return itemSelection.length;
}
public void set(int i, boolean b) {
itemSelection[i] = b;
}
}