Primeiramente obrigado por tentarem ajudar, vamos lá!
Eu possuo um projeto feito no Android Studio onde contém um ListView personalizado que eu usava junto com meu banco de dados INTERNO. Após o projeto ter evoluído, mudei meu banco de dados para EXTERNO, e estou usando o MYSQL como banco de dados.
O problema é o seguinte: Após mudar para banco de dados EXTERNO o meu ListView personalizado não exibe o primeiro resultado da lista. Ou seja, tenho um adapter chamado “adpJogos” que está populando a lista do ListView com variáveis retiradas de um objetos, porém, quando ele só contem apenas um objeto para popular o ListView, o ListView vem vazio como se não tivesse nenhum item, porém, após adicionar outro objeto no Adapter, o ListView exibe os 2 objetos de uma vez.
Segue meu código para criar o adapter e setar ele no ListView:
public class ActApp extends AppCompatActivity {
private ListView lstComentarios;
private ArrayAdapter < Comentario > adpJogos;
@
Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_cad2_app_comentarios);
lstComentarios = (ListView) findViewById(R.id.lstComentarios);
adpJogos = repositorioJogos.buscaJogos(this, id);
lstComentarios.setAdapter(adpJogos);
}
}
Segue meu código do “repositórioJogos” que é responsável por popular a ListView com itens retirados de um Objeto:
public class RepositorioJogos {
private SQLiteDatabase conn;
public RepositorioJogos(SQLiteDatabase conn) {
this.conn = conn;
}
public ListView buscaJogos(Context context, int id) {
ListView adpJogos = new ListView(context, R.layout.listview);
UsuarioDAO dao = new UsuarioDAO();
ArrayList < Comentario > usr = dao.preencherListView(id);
if (usr != null) {
for (int i = 0; i < usr.size(); i++) {
Comentario comentario = new Comentario();
comentario.setComentarioJogo(usr.get(i).getComentarioJogo());
comentario.setUsuario(usr.get(i).getUsuario());
adpJogos.add(comentario);
}
return adpJogos;
}
return adpJogos;
}
}
Segue o código dos itens da ListView personalizada:
public class ListView extends ArrayAdapter < Comentario > {
private int resource = 0;
private LayoutInflater inflater;
public ListView(Context context, int resource) {
super(context, resource);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.resource = resource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
view = inflater.inflate(resource, parent, false);
viewHolder.txtusuario = (TextView) view.findViewById(R.id.txtusuario);
viewHolder.txtcomentario = (TextView) view.findViewById(R.id.txtcomentario);
view.setTag(viewHolder);
convertView = view;
} else {
viewHolder = (ViewHolder) convertView.getTag();
view = convertView;
}
Comentario comentario = getItem(position);
viewHolder.txtcomentario.setText(comentario.getComentarioJogo());
viewHolder.txtusuario.setText(comentario.getUsuario());
return view;
}
static class ViewHolder {
TextView txtusuario;
TextView txtcomentario;
}
}
Se precisarem de algo mais, como por exemplo o código que está no dao.preencherListView é só pedir, mais se trata apenas de um simples SELECT coluna FROM tabela. Qualquer dúvida também só perguntar.
Obrigado