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”);