Похоже, что данные сохраняются без проблем, но в данный момент, чтобы показать их с помощью gridView, первое поле «Nombre» повторяется, а в других полях не отображаются соответствующие данные.
Я поставил немного Log.d чтобы увидеть, что сохраняет список.add (новый Ne gocios ....
и он показывает правильные данные
Это это то, что показывает деятельность
"Ne gocios" класс
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 (новый Ne gocios ...
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();
}