Android 列表视图滚动重置
我在列表中使用适配器,以及按钮的视图, 某些按钮被阻止,但如果您滚动此按钮的下拉列表时启用了另一个不匹配的错误位置,是否有办法解决此问题 这是我的适配器Android 列表视图滚动重置,android,listview,android-arrayadapter,Android,Listview,Android Arrayadapter,我在列表中使用适配器,以及按钮的视图, 某些按钮被阻止,但如果您滚动此按钮的下拉列表时启用了另一个不匹配的错误位置,是否有办法解决此问题 这是我的适配器 /** * Created by Isai on 15/03/17. */ public class AdapterFood extends ArrayAdapter<Charola.Producto> { ImageView imgFood; private String nameService = "Agr
/**
* Created by Isai on 15/03/17.
*/
public class AdapterFood extends ArrayAdapter<Charola.Producto> {
ImageView imgFood;
private String nameService = "AgregarItemCharola";
private String usuarioId = "UsuarioId";
private String productoId = "ProductoId";
private String cantidad = "Cantidad";
private String especificaciones = "Especificaciones";
private String urlComplete = Constantes.URLMAIN + nameService + "?";
private Fragment fragment;
private List<Charola.Producto> productoList;
private int contador;
private String totalCharola;
public AdapterFood(Context context, List<Charola.Producto> productoList, Fragment fragment) {
super(context, 0, productoList);
this.fragment = fragment;
this.productoList = productoList;
}
@Override
public View getView(final int position, View convertView, ViewGroup viewGroup) {
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View listViewInflate = convertView;
if (convertView == null) {
listViewInflate = inflater.inflate(R.layout.item_menu, viewGroup, false);
}
imgFood = (ImageView) listViewInflate.findViewById(R.id.imageFood);
TextView tituloFood = (TextView) listViewInflate.findViewById(R.id.tittleFood);
TextView descricionFood = (TextView) listViewInflate.findViewById(R.id.descriptionFood);
TextView precio = (TextView) listViewInflate.findViewById(R.id.priceFood);
final Button btnAnadir = (Button) listViewInflate.findViewById(R.id.buttonAnadir);
final Charola.Producto producto = getItem(position);
tituloFood.setText(producto.getNombre().toString());
descricionFood.setText(producto.getDescripcion());
precio.setText("$" + producto.getPrecio() + ".00");
if(producto.isExistencia()){
if (producto.getCantidad() != 0) {
btnAnadir.setText("+ Añadir (" + producto.getCantidad() + ")");
btnAnadir.setBackgroundResource(R.drawable.btns_dialogs);
} else {
btnAnadir.setText("+ Añadir");
btnAnadir.setBackgroundResource(R.drawable.btn_anadir);
}
btnAnadir.setTag(position);
btnAnadir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("La etiqueta cambio del siguiente forma: "+ btnAnadir.getTag());
btnAnadir.setBackgroundResource(R.drawable.btns_dialogs);
new consumeServiceAgregarProductoACharola().execute(urlComplete + "#" + producto.getIdProducto());
System.out.println("+ Añadir("+(producto.getCantidad()+1)+")");
btnAnadir.setText("+ Añadir("+(producto.getCantidad()+1)+")");
producto.setCantidad((producto.getCantidad()+1));
//notifyDataSetChanged();
}
});
}else{
btnAnadir.setBackgroundResource(R.drawable.btn_agotado);
btnAnadir.setBackgroundResource(R.drawable.btn_agotado);
btnAnadir.setText("Agotado");
}
Glide.with(getContext()).
load(producto.getUrlFoto()).placeholder(R.drawable.place_holder)
.into(imgFood);
//Escalar Vistas
/* GuiTools guiTools = GuiTools.getCurrent();
guiTools.scale(tituloFood);
guiTools.scale(descricionFood);
guiTools.scale(precio);
guiTools.scale(btnAnadir);*/
notifyDataSetChanged();
return listViewInflate;
}
//recuperar id usuario
public int recuperarIdUsario() {
SharedPreferences sharedPreferences = getContext().getSharedPreferences("MIS_PREFRENCIAS", Context.MODE_PRIVATE);
int valor = sharedPreferences.getInt("id", 1);
return valor;
}
//Consume service AgregarProducto
class consumeServiceAgregarProductoACharola extends AsyncTask<String, Void, Void> {
private AlertDialogLoading loading;
@Override
protected Void doInBackground(String... params) {
String delimiter = "#";
String[] arrayLink = params[0].split("#");
URL url = null;
try {
url = new URL(arrayLink[0]);
Log.d("URL ---------->", url.toString());
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");// La conexión es por el metodo POST
urlConnection.setRequestProperty("Content-Type", "application/json");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setUseCaches(false);
urlConnection.connect();
JSONObject jsonParam = new JSONObject();
jsonParam.put("UsuarioId", recuperarIdUsario());
jsonParam.put("ProductoId", arrayLink[1]);
jsonParam.put("Cantidad", 1);
jsonParam.put("Especificaciones", "");
// Send POST output.
OutputStreamWriter out = new OutputStreamWriter(urlConnection.getOutputStream());
out.write(jsonParam.toString());
out.close();
StringBuilder sb = new StringBuilder();
int HttpResult = urlConnection.getResponseCode();
if (HttpResult == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream(), "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
JSONObject jsonObject = new JSONObject(sb.toString());
Log.d("RESPUESTA ----->",jsonObject.toString());
Log.d("TAMAÑO DEL CH------>", String.valueOf(jsonObject.getInt("TotalCharola")));
totalCharola = String.valueOf(jsonObject.getInt("TotalCharola"));
} else {
Log.e("NO SUCCESS", urlConnection.getResponseMessage());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = new AlertDialogLoading(fragment.getActivity());
loading.messageDialog("", "");
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
PrincipalViewController principalViewController = new PrincipalViewController();
principalViewController.ahBottomNavigation.setNotification(totalCharola,2);
loading.closeMessage();
}
}
}
/**
*由Isai于2017年3月15日创建。
*/
公共类AdapterFood扩展了ArrayAdapter{
ImageView imgFood;
私有字符串nameService=“AgregarItemCharola”;
私有字符串usuarioId=“usuarioId”;
私有字符串productoId=“productoId”;
私有字符串cantidad=“cantidad”;
私有字符串specificaciones=“specificaciones”;
私有字符串urlplete=constants.URLMAIN+nameService+“?”;
私有片段;
私人上市生产商;
康塔多私人酒店;
私有字符串全切圆;
公共适配器食品(上下文、列表productoList、片段){
super(上下文,0,productoList);
this.fragment=片段;
this.productoList=productoList;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组视图组){
LayoutInflater充气机=(LayoutInflater)
getContext().getSystemService(Context.LAYOUT\u充气机\u服务);
视图列表视图充气=转换视图;
if(convertView==null){
listViewInflate=充气机。充气(R.layout.item_菜单,视图组,false);
}
imgFood=(ImageView)listViewInflate.findViewById(R.id.imageFood);
TextView tituloFood=(TextView)listViewInflate.findViewById(R.id.titlefood);
TextView descripionfood=(TextView)listViewInflate.findViewById(R.id.descriptionFood);
TextView precio=(TextView)listViewInflate.findViewById(R.id.priceFood);
最终按钮btnAnadir=(按钮)列表视图充气。findViewById(R.id.ButtonNADIR);
最终Charola.Producto Producto=getItem(位置);
tituloFood.setText(producto.getNombre().toString());
descripionfood.setText(producto.getDescription());
precio.setText(“$”+producto.getPrecio()+”.00”);
if(producto.isExistencia()){
if(producto.getCantidad()!=0){
btnAnadir.setText(“+Añadir”(+producto.getCantidad()+”);
btnAnadir.setBackgroundResource(R.drawable.btns\u对话框);
}否则{
btnAnadir.setText(“+Añadir”);
btnAnadir.setBackgroundResource(R.drawable.btn_anadir);
}
btnAnadir.setTag(位置);
btnAnadir.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
System.out.println(“形式:+btnAnadir.getTag());
btnAnadir.setBackgroundResource(R.drawable.btns\u对话框);
新的ConsumerServiceAgregarProductOACharola().execute(urlComplete+“#”+producto.getIdProducto());
System.out.println(“+Añadir”(+(producto.getCantidad()+1)+”);
btnAnadir.setText(“+Añadir”(+(producto.getCantidad()+1)+”);
producto.setCantidad((producto.getCantidad()+1));
//notifyDataSetChanged();
}
});
}否则{
btnAnadir.挫折资源(R.可提取btn_agotado);
btnAnadir.挫折资源(R.可提取btn_agotado);
btnAnadir.setText(“Agotado”);
}
Glide.with(getContext())。
load(producto.getUrlFoto()).placeholder(R.drawable.place_)
.进入(imgFood);
//埃斯卡拉远景
/*GuiTools GuiTools=GuiTools.getCurrent();
吉他乐器.音阶(提多乐食品);
吉他工具.音阶(descripionfood);
吉他。音阶(精度);
吉他音阶(btnAnadir)*/
notifyDataSetChanged();
返回列表视图充气;
}
//复发性尿毒症
公共int Reciperaridusario(){
SharedReferences SharedReferences=getContext().GetSharedReferences(“MIS_preferences”,Context.MODE_PRIVATE);
int valor=sharedPreferences.getInt(“id”,1);
回报勇气;
}
//消费服务产品
类ConsumerServiceAgregarProductOACharola扩展了AsyncTask{
私人警报加载;
@凌驾
受保护的Void doInBackground(字符串…参数){
字符串分隔符=“#”;
字符串[]arrayLink=params[0]。拆分(“#”);
URL=null;
试一试{
url=新url(arrayLink[0]);
Log.d(“URL------>”,URL.toString());
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod(“POST”);//La conexión es por el metodo POST
setRequestProperty(“内容类型”、“应用程序/json”);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setUseCaches(false);
urlConnection.connect();
JSONObject jsonParam=新的JSONObject();
jsonParam.put(“UsuarioId”,recurperaridusario());
jsonParam.put(“ProductoId”,arrayLink[1]);
jsonParam.put(“Cantidad”,1);
jsonParam.put(“特殊参数”和“);
//发送POST输出。
OutputStreamWriter out=新的OutputStreamWriter(urlConnection.getOutputStream());
out.write(jsonParam.toString());
out.close();
StringBuilder sb=新的StringBuilder();
int-HttpResult=urlConnection.getResponseCode();
if(HttpResult==HttpURLConnection.HTTP\u确定){
BufferedReader br=新的BufferedReader(新的InputStreamReader(
urlConnection.getInputStream(),“utf-8”);