Tenho uma aplicação Android aonde se faz necessário o uso do Table Layout.
No caso exibirei os dados em um Table View organizado por colunas e seus respectivos dados.
| Nome | Placa | Ano |
s 12 2000
d 21 2243
r 12 1235
Entretanto, quando tenho que adicionar algum dado aos dados mapeados do xml, acontece da minha table row que não está no listadapter se repetir também!
| Nome | Placa | Ano |
s 12 2000
| Nome | Placa | Ano |
d 21 2243
| Nome | Placa | Ano |
r 12 1235
consegui contornar o problema com um “jeitinho”.
Entretanto caí no problema de ter que colocar um Cabeçalho/Título nessa tabela.
| RELAÇÃO DE CADASTRADOS |
| Nome | Placa | Ano |
s 12 2000
d 21 2243
r 12 1235
o que acaba acontecendo do mesmo erro da tabela 2 que eu postei mais acima.
Gostaria de saber se é possível colocar algum TableRow dentro da minha TableView que não entrasse no loop do meu ListAdapter.
segue o exemplo de como estou montando a aplicação:
public class TabelaExemploActivity extends ListActivity {
private DataBase db = null;
@Override
public void onCreate(Bundle icicle) {
db = new DataBase();
super.onCreate(icicle);
Collection<Carro> lista = db.listarTodos();
List<Carro> l = new ArrayList<Carro>();
for (Carro carro : lista) {
l.add(carro);
}
setListAdapter(new CarroListAdaoter(this, l));
}
@Override
public void onListItemClick(ListView l, View v, int posicao, long id){
super.onListItemClick(l, v, posicao, id);
}
}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
//<!-- excluir o table row referente as colunas, pois as inseri manualmente o exemplo real -->
<TableRow
android:layout_height="wrap_content"
android:layout_width="160sp"
>
<TextView
android:id="@+id/nome"
android:layout_height="wrap_content"
android:layout_width="160sp"
/>
<TextView
android:id="@+id/placa"
android:layout_height="wrap_content"
android:layout_width="160sp"
/>
<TextView
android:id="@+id/ano"
android:layout_height="wrap_content"
android:layout_width="160sp"
/>
</TableRow>
</TableLayout>
public class CarroListAdaoter extends BaseAdapter {
private Context context;
private List<Carro> lista;
//omiti alguns metodos
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//recupera o carro da posição atual
Carro c = lista.get(position);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.lista_tabela, null);
//atualiza o valor do textview
TextView nome = (TextView) view.findViewById(R.id.nome);
nome.setText(c.getMarca());
TextView placa = (TextView) view.findViewById(R.id.placa);
placa.setText(c.getPlaca());
TextView ano = (TextView) view.findViewById(R.id.ano);
ano.setText(c.getModelo());
return view;
}
}