Ha solucionado mi problema,
fue resuelto, pero es Gambiarra
Debido a que los valores vienen de una mesa lo hicieron en DataBaseHelper clase, y aquí aplicamos la tabla RANDOM directa.
public List<String> abrirImagemClienteBanco() {
byte[] imagem = null;
/** deixa todos os campos ja_gravados = N */
updateClientes();
/** cria uma lista de dados dos clientes */
List<String> list = new ArrayList<String>();
Cursor cursor = dbQuery.rawQuery(
"SELECT * FROM clientes WHERE ja_utilizado <> \"S\" "
+ " AND serie_cli = 1 ORDER BY RANDOM() limit 4 ",
null);
if (cursor.moveToFirst()) {
cursor.moveToFirst();
do {
list.add(cursor.getString(1));
/**Fazemos um updates deixando o campo = S*/
updateClienteJafoi(cursor.getInt(0));
} while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed()) {
cursor.close();
/** aqui só mostra os que ja foi utilizado para capturar a foto */
Cursor cs = dbQuery
.rawQuery(
"SELECT * FROM clientes WHERE ja_utilizado = \"S\" "
+ " AND serie_cli = 1 ORDER BY RANDOM() limit 1 ",
null);
if (cs.getCount() > 0) {
cs.moveToFirst();
/** Captura imagem */
imagem = cs
.getBlob(cs.getColumnIndex("img_cliente"));
/** Captura nome do cliente */
nomeClienteSorteado = cs.getString(cs
.getColumnIndex("nome_clliente"));
/** Captura codigo do cliente */
codigoCli = cs.getInt(cs.getColumnIndex("_id"));
}
cs.close();
ByteArrayInputStream imageStream = new ByteArrayInputStream(imagem);
theImage = BitmapFactory.decodeStream(imageStream);
}
return list;
}
public void updateClientes() {
ContentValues values = new ContentValues();
values.put("ja_utilizado", "N");
dbQuery.update("clientes", values, null, null);
}
public void updateClienteJafoi(long codigo) {
ContentValues values = new ContentValues();
values.put("ja_utilizado", "S");
dbQuery.update("clientes", values, "_id = ?",
new String[] { codigo + "" });
}
//*********************************************
E na activity chamo o método assim
private void visualizarImagemClie() {
/** imagem do banco de dados */
imgMainCliente.setImageBitmap(db.theImage);
/**limpo os botões a cada passada para o if */
botao1.setText("");
botao2.setText("");
botao3.setText("");
botao4.setText("");
/** Lista todos os clientes */
List<String> nomeClientes = db.abrirImagemClienteBanco();
StringBuilder sb = new StringBuilder();
sb.append("Clientes Sorteados:\n");
for (String name : nomeClientes) {
sb.append(name + "\n");
/** Aqui um eninhado de if para popular com os nomes sorteados, no caso 4 nomes */
if (botao1.getText().equals("")) {
botao1.setText(name.toString());
} else if (botao2.getText().equals("")) {
botao2.setText(name.toString());
} else if (botao3.getText().equals("")) {
botao3.setText(name.toString());
} else if (botao4.getText().equals("")) {
botao4.setText(name.toString());
}
}
//output.setText(sb.toString());
// ImageView.
imgMainCliente.setImageBitmap(db.theImage);
}
Gracias
Mi español es el traductor google. excusa.