繁体   English   中英

Android Studio从sqlite中的arraylist保存数据重复第一个字段

[英]Android Studio save data from arraylist in sqlite repeats the first field

数据似乎保存没有问题,但在用 gridView 显示它的时刻,第一个字段“Nombre”重复自己,其他字段不显示相应的数据

我放了一些 Log.d 来查看保存 list.add(new Negocios ....

它显示了正确的数据

这是活动显示的内容

“Negocios”类

public Negocios(int id, String negocio, String categoria, String descripcion, byte[] image) {
    this.id = id;
    this.negocio = negocio;
    this.categoria = categoria;
    this.descripcion = descripcion;
    this.image = image;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getNegocio() {
    return negocio;
}

public void setNegocio(String negocio) {
    this.negocio = negocio;
}

public String getCategoria() {
    return categoria;
}

public void setCategoria(String categoria) {
    this.categoria = categoria;
}

public String getDescripcion() {
    return descripcion;
}

public void setDescripcion(String descripcion) {
    this.descripcion = descripcion;
}

public byte[] getImage() {
    return image;
}

public void setImage(byte[] image) {
    this.image = image;
}

适配器类别

public class NegociosListAdapter extends BaseAdapter {

private Context context;
private int layout;
private ArrayList<Negocios> listaNegocios;

public NegociosListAdapter(Context context, int layout, ArrayList<Negocios> listaNegocios) {
    this.context = context;
    this.layout = layout;
    this.listaNegocios = listaNegocios;
}

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

@Override
public Object getItem(int position) {
    return listaNegocios.get(position);
}

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

private class ViewHolder{
     ImageView imageView;
     TextView Negocio,Categoria,Descripcion;
}

@Override
public View getView(int position, View view, ViewGroup parent) {

    View row = view;
    ViewHolder holder = new ViewHolder();

    if (row == null){
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = inflater.inflate(layout,null);

        holder.Negocio = row.findViewById(R.id.txtNegocio);
        holder.Categoria =  row.findViewById(R.id.txtCategoria);
        holder.Descripcion =  row.findViewById(R.id.txtDescripcion);
        holder.imageView =  row.findViewById(R.id.imgVnego);

        row.setTag(holder);

    }else{
        holder = (ViewHolder) row.getTag();
    }

    Negocios negocios = listaNegocios.get(position);

    holder.Negocio.setText(negocios.getNegocio());
    holder.Categoria.setText(negocios.getNegocio());
    holder.Descripcion.setText(negocios.getNegocio());

    byte[] negocioImage = negocios.getImage();
    Bitmap bitmap = BitmapFactory.decodeByteArray(negocioImage,0, negocioImage.length);
    holder.imageView.setImageBitmap(bitmap);

    return row;
}

还有我用来显示数据并将项目添加到 list.add(new Negocios...

public class Negocios_list extends AppCompatActivity {

GridView gridView;
ArrayList<Negocios> list;
NegociosListAdapter adapter = null;

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

    gridView = findViewById(R.id.gridView);
    list = new ArrayList<>();
    adapter = new NegociosListAdapter(this, R.layout.negocios_items, list);
    gridView.setAdapter(adapter);

    //get data
    Cursor cursor = RegistroNegocios.sqLiteHelper.getData("SELECT * FROM NEGOCIOS");

    list.clear();

    while (cursor.moveToNext()){
        int id = cursor.getInt(0);
        String negocio = cursor.getString(1);
        String categoria = cursor.getString(2);
        String descripcion = cursor.getString(3);
        byte[] image = cursor.getBlob(4);

        Log.d("Neg", negocio);
        Log.d("Cat", categoria);
        Log.d("Des", descripcion);

        list.add(new Negocios(id, negocio, categoria, descripcion, image));



    }



    adapter.notifyDataSetChanged();

}

您正在错误地处理 Recyclerview 中的数据。

代替

holder.Negocio.setText(negocios.getNegocio());
holder.Categoria.setText(negocios.getNegocio());
holder.Descripcion.setText(negocios.getNegocio());

holder.Negocio.setText(negocios.getNegocio());
holder.Categoria.setText(negocios.getcategoria());
holder.Descripcion.setText(negocios.getdescription());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM