java - 在我的 ArrayList 上保存项目(添加不断替换第一个)

标签 java android listview arraylist

我正在尝试创建一个应用程序,向商店的员工展示帮助客户的步骤。它显示了员工必须提出的问题,以了解客户的需求。

问题是,当我尝试选择产品时,我使用 ArrayList 将其添加到 ListView。我可以添加一个产品,但当我尝试添加第二个产品时,它只会替换我添加的第一个产品。

Sellador.java 的代码(我在其中选择要添加的产品)

public class Sellador extends AppCompatActivity {

    String codigo,nombreproducto;
    int ident,imagen,first;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sellador);

    }

    public void onButtonClick(View v){
        if(v.getId() == R.id.selladorbco){
            codigo = "600706";
            nombreproducto = "Prueba desde boton sellador bco";
            ident = 4;
            imagen = R.drawable.guy1;
            Intent agg2 = new Intent(this,ListaProductos.class);
            agg2.putExtra("codigo",codigo);
            agg2.putExtra("nombreproducto",nombreproducto);
            agg2.putExtra("identificador",ident);
            agg2.putExtra("imagen",imagen);
            startActivity(agg2);
        }
        if(v.getId() == R.id.selladortrans){
            codigo = "600705";
            nombreproducto = "Prueba desde boton sellador trans";
            ident = 2;
            imagen = R.drawable.guy1;
            Intent agg = new Intent(this,ListaProductos.class);
            agg.putExtra("codigo",codigo);
            agg.putExtra("nombreproducto",nombreproducto);
            agg.putExtra("identificador",ident);
            agg.putExtra("imagen",imagen);
            startActivity(agg);

        }
        if(v.getId() == R.id.botonlista){
            Intent cambiolista = new Intent(this, ListaProductos.class);
            startActivity(cambiolista);
        }
    }
}

ListaProductos.java 的代码(我在其中显示产品的 ListView)

public class ListaProductos extends AppCompatActivity {

    public String codigo,nombreproducto;
    public int ident,imagen;
    public  ListView listaDatos;
    public  ArrayList<Producto> Lista;
    public Adaptador miadaptador;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lista_productos);
        aggPrimerProducto();

    }

    public void aggPrimerProducto(){
        listaDatos = (ListView) findViewById(R.id.lstDatos);
        Lista = new ArrayList<Producto>();
        miadaptador = new Adaptador(this,Lista);
        listaDatos.setAdapter(miadaptador);
        Bundle extras = getIntent().getExtras();
        codigo = extras.getString("codigo");
        nombreproducto = extras.getString("nombreproducto");
        ident = extras.getInt("ident");
        imagen = extras.getInt("imagen");
        agregarProducto(codigo,ident,imagen,nombreproducto);
    }

    public void agregarProducto(String code, int ident, int image, String name){

        Lista.add(new Producto(code,ident,image,name));
        miadaptador.notifyDataSetChanged();
    }

    public void onButtonClick(View v){
        if(v.getId() == R.id.botonsig){
            agregarProducto("66666",5,R.drawable.guy1,"Prueba con boton existente");

        }
    }
}

适配器代码:

public class Adaptador extends BaseAdapter {

    Context contexto;
    List<Producto> ListaObjetos;

    public Adaptador(Context contexto, List<Producto> listaObjetos) {
        this.contexto = contexto;
        ListaObjetos = listaObjetos;
    }

    @Override
    public int getCount() {
        return ListaObjetos.size();
    }

    @Override
    public Object getItem(int i) {
        return ListaObjetos.get(i);
    }

    @Override
    public long getItemId(int i) {
        return ListaObjetos.get(i).getId();
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        View vista = view;

        LayoutInflater inflate = LayoutInflater.from(contexto);
        vista = inflate.inflate(R.layout.itemlistview,viewGroup,false);

        ImageView imagen = (ImageView) vista.findViewById(R.id.imagenProducto);
        TextView codigo = (TextView) vista.findViewById(R.id.txtCodigo);
        TextView nombre = (TextView) vista.findViewById(R.id.txtNombre);

        codigo.setText(ListaObjetos.get(i).getCodigo());
        nombre.setText(ListaObjetos.get(i).getNombre());
        imagen.setImageResource(ListaObjetos.get(i).getImagen());

        return vista;
    }
}

最佳答案

尝试替换这一行

miadaptador.notifyDataSetChanged();

有了这个

listaDatos.setAdapter(miadaptador);

在您的agregarProducto() 方法中

关于java - 在我的 ArrayList 上保存项目(添加不断替换第一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450968/

相关文章:

php - 基于当前DP模型的Yii2 ListView自定义数据属性

java - MongoDB:游标在 next() 完成之前已关闭

java - 如何让listView说一件事,但传递不同的数据

android - listView 上的复选框阻止事件点击,kotlin

android - 开发人员错误验证 Gmail 登录 Android - 异常 10

android - LinearLayout 滚动到顶部

android - 如何在 Kotlin 中计算百分比

java - Tomcat WebService部署异常

java - 使用 Java XPath 查询解析 XML,错误 :

java - java.nio.file.Files类中exists()方法的行为