向上或向下滚动列表视图的问题

Posted

技术标签:

【中文标题】向上或向下滚动列表视图的问题【英文标题】:problem with scrolling up or down of listview 【发布时间】:2021-07-17 13:03:24 【问题描述】:

当我尝试获取 NumberPicker 的所有值时,它会正确返回中间的值,而第一个和最后一个仅返回在它们之间修改的最后一个值。我不明白我错在哪里。

public class piatto 
    String nome;
    String Descrizione;
    String prezzo;
    String immagine;
    String tag;


    public piatto(String nome, String Descrizione, String prezzo, String immagine, String tag) 
        this.nome= nome;
        this.Descrizione= Descrizione;
        this.prezzo= prezzo;
        this.immagine=immagine;
        this.tag=tag;

    

    public String getNome() 
        return nome;
    

    public void setNome(String nome) 
        this.nome = nome;
    

    public String getDescrizione() 
        return Descrizione;
    

    public void setDescrizione(String descrizione) 
        Descrizione = descrizione;
    

    public String getPrezzo() 
        return prezzo;
    

    public void setPrezzo(String prezzo) 
        this.prezzo = prezzo;
    

    public String getImmagine() 
        return immagine;
    

    public void setImmagine(String immagine) 
        this.immagine = immagine;
    

    public String getTag() 
        return tag;
    

    public void setTag(String tag) 
        this.tag = tag;
    

这是我的适配器

public class ProductListAdapterforListView extends BaseAdapter 
    private Context mContext;
    private List<piatto> mProductList;

    public ProductListAdapterforListView(Context mContext, List<piatto> mProductList) 
        this.mContext = mContext;
        this.mProductList = mProductList;

    
    @Override
    public int getCount() 
        return mProductList.size();
    

    @Override
    public piatto getItem(int position) 
        return mProductList.get(position);
    

    @Override
    public long getItemId(int position) 
        return position;
    


    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
        View listitemview ;

        if (convertView==null)

            listitemview = View.inflate(mContext, R.layout.row_data_list, null);


            ImageView i = (ImageView) listitemview.findViewById(R.id.imagepiatto);
            com.shawnlin.numberpicker.NumberPicker numberPicker = (com.shawnlin.numberpicker.NumberPicker) listitemview.findViewById(R.id.number_picker);
            TextView n=(TextView) listitemview.findViewById(R.id.namepiatto);
            TextView p=(TextView) listitemview.findViewById(R.id.prezzopiatto);

            n.setText(mProductList.get(position).getNome());
            p.setText(mProductList.get(position).getPrezzo()+" €");
            Picasso.get().load(mProductList.get(position).getImmagine()).into(i);
         else 
            listitemview=convertView;
        

        return listitemview;
    
    

这是我的 Java 类,我在其中获取每个 Item 的 NumberPicker 的值

@Override
    public void onClick(View view) 
        if (view.getId()==R.id.buttonnext)
        
            Float totale = (float) 0.0;
            String listapiatti="";

            for (int i = 0; i < listView.getChildCount(); i++) 
                view = listView.getChildAt(i);

                TextView n = view.findViewById(R.id.namepiatto);
                String nome = n.getText().toString();

                TextView p = view.findViewById(R.id.prezzopiatto);
                String pricestr = p.getText().toString();
                String[] prezzo = pricestr.split(" ");
                Float price = Float.valueOf(prezzo[0]);

                com.shawnlin.numberpicker.NumberPicker numberPicker = (com.shawnlin.numberpicker.NumberPicker) view.findViewById(R.id.number_picker);
                int value = numberPicker.getValue();

                if (value != 0) 
                    totale = totale + (price * value);
                    listapiatti = listapiatti + nome + ": " + value + ", ";
                    Toast.makeText(getApplicationContext(), String.valueOf(i)+" "+value,
                            Toast.LENGTH_LONG).show();
                
            
            String finale=String.valueOf(totale);


            startActivity(new Intent(carrello3.this, ordine.class));
        
        if (view.getId()==R.id.buttonback)
            onBackPressed();
        
    

【问题讨论】:

你能解释一下你面临的这个问题吗 当然,我刚刚添加了更多关于它的信息 【参考方案1】:

在 setOnScrollListener 上创建一个对象似乎不是一个好主意,该对象在向上/向下滚动期间被多次调用。如果您能提供更多详细信息,那就太好了。

【讨论】:

以上是关于向上或向下滚动列表视图的问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的收藏视图在向下或向上滚动时很慢?如何解决性能问题?我已经清理了我的 UI 代码

有啥方法可以知道用户是向上还是向下滚动表格视图?在swift IOS中[重复]

在具有不同单元格高度的列表视图中滚动

Flutter ListVİew 总是在向上或向下滚动时重新渲染

当用户向下滚动后向上滚动时,如何在表格视图中显示搜索框?

带有光标适配器滚动问题的android列表视图