我想顯示一個活動作爲對話框,但該對話框將顯示一個從數據庫動態填充的佈局,但我沒有得到任何結果。動態添加textview而沒有結果
package chintan.khetiya.sqlite.cursor;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class lista extends Activity {
private ListView lista;
DatabaseHandler db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listado);
//SE HACE TODO EL PROCESO EJECUTANDO UNA FUNCION
Refresh();
lista.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position,long id) {
final int selected_row = position;
final String cliente = DameCliente(selected_row);
final int limite = DameConteo();
int i;
AlertDialog.Builder myDialog
= new AlertDialog.Builder(lista.this);
我的問題是在這裏
LinearLayout linear = (LinearLayout) findViewById(R.id.generar_text);
TextView text = new TextView(lista.this);
text.setText("hola");
當然,這是一個考驗。我會做一個循環來創建更多的文字瀏覽,但我需要建立第一個,然後循環更多。
LayoutInflater inflater = getLayoutInflater();
myDialog.setView(inflater.inflate(R.layout.dialog, null));
myDialog.setTitle(cliente);
myDialog.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
}
});
myDialog.setNeutralButton("Eliminar Pedido", new DialogInterface.OnClickListener() {
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
final int eliminar = selected_row + 1;
AlertDialog.Builder dialogoDentro = new AlertDialog.Builder(lista.this);
dialogoDentro.setTitle("Alerta !");
dialogoDentro.setMessage("Eliminar el Pedido ?");
dialogoDentro.setNeutralButton("Eliminar", new DialogInterface.OnClickListener({
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
db.Delete_Pedido(eliminar);
lista.this.Refresh();
}
});
dialogoDentro.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
// do something when the button is clicked
public void onClick(DialogInterface arg0, int arg1) {
}
});
dialogoDentro.show();
}
});
myDialog.show();
}
});
}
public void Refresh(){
int limite = DameConteo();// numero de columnas insertadas como productos
int numero_pedidos = NumeroPedidos();
//Toast.makeText(getApplicationContext(), "Valor Columna: " + ValorColumna(columna) + " -- Columna: " + columna + " -- Precio : " + ValorPrecio(columna), Toast.LENGTH_SHORT).show();
ArrayList<lista_entrada> datos = new ArrayList<lista_entrada>();
for (int a = 1; a <= numero_pedidos;a ++){
String pedidor = InfoPedidos(a).getString(1);
float iva = (float) 1.16;
int articulos = 0;
float subtotal = 0;
float total = 0;
for (int b=0; b<limite; b++){
String columna = DameColumna(b).toString();
articulos = articulos + ValorColumna(columna,a);
subtotal = subtotal + (ValorColumna(columna,a)*(ValorPrecio(columna)));
total = total + (float) (((ValorColumna(columna,a)*(ValorPrecio(columna)))) * iva);
}
datos.add(new lista_entrada(pedidor,"Pedido: " + articulos + " artículos", "Subtotal: $" + String.format("%.2f", subtotal), "Total: $" + String.format("%.2f", total)));
//}
}
lista = (ListView) findViewById(R.id.ListView_listado);
lista.setAdapter(new lista_adaptador(this, R.layout.entrada, datos){
@Override
public void onEntrada(Object entrada, View view) {
if (entrada != null) {
TextView nombre = (TextView) view.findViewById(R.id.nombre);
if (nombre != null)
nombre.setText(((lista_entrada) entrada).getNombre());
TextView articulos = (TextView) view.findViewById(R.id.articulos);
if (articulos != null)
articulos.setText(((lista_entrada) entrada).getArticulos());
TextView subtotal = (TextView) view.findViewById(R.id.subtotal);
if (subtotal != null)
subtotal.setText(((lista_entrada) entrada).getSubtotal());
TextView total = (TextView) view.findViewById(R.id.total);
if (total != null)
total.setText(((lista_entrada) entrada).getTotal());
}
}
});
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Refresh();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Clientes:
finish();
startActivity(new Intent(this, Main_Screen.class));
return true;
case R.id.Productos:
finish();
startActivity(new Intent(this, Product_Screen.class));
return true;
case R.id.Nuevo_Pedido:
finish();
startActivity(new Intent(this, home_screen.class));
return true;
case R.id.listado_pedidos:
finish();
startActivity(new Intent(this, lista.class));
return true;
case R.id.salir:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public String DameCliente(int contact_name){
//product_data.clear();
db = new DatabaseHandler(this);
ArrayList<Pedido> pedido_array_from_db = db.Get_Pedido();
String cte_name = pedido_array_from_db.get(contact_name).get_contact_name();
return cte_name;
}
public int DameConteo(){
db = new DatabaseHandler(this);
int conteo = db.Get_Total_Products();
return conteo;
}
public int NumeroPedidos(){
db = new DatabaseHandler(this);
int numero = db.Get_Total_Pedido();
return numero;
}
public Cursor InfoPedidos(int id){
db = new DatabaseHandler(this);
Cursor cursor = db.Get_Pedido(id);
return cursor;
}
public String DameColumna(int columna_id){
db = new DatabaseHandler(this);
ArrayList<Columna> columna_array_from_db = db.Get_Columna();
String columna = columna_array_from_db.get(columna_id).get_columnaName();
return columna;
}
public int ValorColumna(String columna, int a){
String valor_a = String.valueOf(a);
db = new DatabaseHandler(this);
int valor = db.get_valor_columna(columna,valor_a);
return valor;
}
public float ValorPrecio(String columna){
db = new DatabaseHandler(this);
float valor = db.get_valor_precio(columna);
return valor;
}
}
「線性」佈局是R.layout.dialog的一部分,是嗎?我的意思是線性佈局和你面對問題的textview是對話的元素..是嗎? – droidx
這是對的,問題出在對話框中。我沒有錯誤,但都不能看結果..對話框的內容是空的。 – bigmerol
是的,「線性佈局」是R.layout.dialog的一部分,它沒有TextView。我需要在.java文件中建立它。 – bigmerol