Java Android Studio在sqlite中保存arraylist中的数据会重复第一个字段
数据保存似乎没有问题,但在使用gridView显示数据时,第一个字段“Nombre”会重复自身,而其他文件不会显示相应的数据 我放置了一些Log.d来查看保存列表的内容 它显示了正确的数据 “Negocios”类Java Android Studio在sqlite中保存arraylist中的数据会重复第一个字段,java,android,android-sqlite,Java,Android,Android Sqlite,数据保存似乎没有问题,但在使用gridView显示数据时,第一个字段“Nombre”会重复自身,而其他文件不会显示相应的数据 我放置了一些Log.d来查看保存列表的内容 它显示了正确的数据 “Negocios”类 public Negocios(int id, String negocio, String categoria, String descripcion, byte[] image) { this.id = id; this.negocio = negocio;
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;
}
公共类NegociosListAdapter扩展了BaseAdapter{
私人语境;
专用int布局;
私人ArrayList listaNegocios;
public NegociosListAdapter(上下文上下文、int布局、ArrayList listaNegocios){
this.context=上下文;
this.layout=布局;
this.listaNegocios=listaNegocios;
}
@凌驾
public int getCount(){
返回listaNegocios.size();
}
@凌驾
公共对象getItem(int位置){
返回listaNegocios.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
私有类视窗持有者{
图像视图图像视图;
TextView Negocio,分类,描述;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
视图行=视图;
ViewHolder=新的ViewHolder();
if(行==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
行=充气机。充气(布局,空);
holder.Negocio=行findviewbyd(R.id.txtNegocio);
holder.Categoria=row.findViewById(R.id.txtCategoria);
holder.Description=row.findViewById(R.id.txtDescription);
holder.imageView=row.findviewbyd(R.id.imgVnego);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
Negocios Negocios=listaNegocios.get(位置);
holder.Negocio.setText(negocios.getNegocio());
holder.Categoria.setText(negocios.getNegocio());
holder.description.setText(negocios.getNegocio());
字节[]negocioImage=negocios.getImage();
位图位图=位图工厂.decodeByteArray(negocioImage,0,negocioImage.length);
holder.imageView.setImageBitmap(位图);
返回行;
}
以及我用来显示数据和向列表中添加项目的类。添加(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();
}
公共类Negocios_列表扩展了AppCompatActivity{
GridView;
数组列表;
NegociosListAdapter=null;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.negocios_列表);
gridView=findViewById(R.id.gridView);
列表=新的ArrayList();
适配器=新的NegociosListAdapter(此,R.layout.negocios_项,列表);
setAdapter(适配器);
//获取数据
Cursor Cursor=RegistroNegocios.sqLiteHelper.getData(“SELECT*FROM NEGOCIOS”);
list.clear();
while(cursor.moveToNext()){
int id=cursor.getInt(0);
String negocio=cursor.getString(1);
stringcategoria=cursor.getString(2);
String description=cursor.getString(3);
字节[]image=cursor.getBlob(4);
Log.d(“Neg”,negocio);
日志d(“类别”,A类);
日志d(“Des”,描述);
添加(新的Negocios(id、negocio、categoria、Description、image));
}
adapter.notifyDataSetChanged();
}
您在Recyclerview中处理数据的方式不正确。
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();
}
更换
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());
设置充气器。充气(布局、父项、错误)非常感谢,错过了该部分,现在它正确显示了数据