Galera,
Estou querendo criar uma pesquisa que acesse o meu banco SQLLite. Não estou sabendo o que usar para realizar essa pesquisa.
Por exemplo, eu digito o nome do cliente, a pesquisa é feita é retorna em uma lista, não estoou sabendo quais componentes devo usar para realizar isso no Android.
No exemplo que eu fiz quando realizo a pesquisa e jogo dentro de um ListView quando clico ele seleciona todos. Estou usando Fragment.
Abaixo todos os meus XML’s que estou usando, estou tendo dificuldade em montar o meu layout.
Alguem para me ajudar???
Att
parte1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fundo"
android:orientation="vertical" >
<TableRow
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#CCCCCC"
android:gravity="center_vertical"
android:paddingTop="3dp" >
<Button
android:id="@+id/buttonAtivarCliente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/cliente" />
<Button
android:id="@+id/buttonAtivarPedido"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/pedido" />
<Button
android:id="@+id/buttonAtivarFechar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/concluir" />
</TableRow>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
parte2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/fundo"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="264dp"
android:layout_height="wrap_content"
android:text="@string/pesquisar_cliente"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editTextPesquisaCliente"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:ems="10"
android:inputType="textNoSuggestions" >
<requestFocus />
</EditText>
<Button
android:id="@+id/buttonPesquisarCliente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:text="@string/pesquisar" />
<ListView
android:id="@+id/listViewCliente"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="35dip"
android:layout_marginTop="5dip"
android:layout_weight="1"
android:drawSelectorOnTop="false"
android:clickable="true"/>
<TextView
android:id="@+id/textViewClienteSelecionado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:text="@string/cliente"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
parte3.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/informacaoDoCliente"
android:layout_width="fill_parent"
android:layout_height="40dp" />
</RelativeLayout>
Cara para listar você deve usar um listView, no seu caso você está correto na questão dos componentes. Agora você tem que criar uma classe que filha do BaseAdapter.
exemplo:
package br.com.adapter;
import java.util.List;
import br.com.R;
import br.co.model.Cliente;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ClienteAdapter extends BaseAdapter{
private LayoutInflater inflater;
private List<Cliente> listaCliente;
public ClienteAdapter (Context ct, List<Cliente> listaCliente) {
this.inflater = (LayoutInflater) ct.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.listaCliente= listaCliente;
}
public int getCount() {
return listaCliente.size();
}
public Object getItem(int position) {
return listaCliente.get(position);
}
public long getItemId(int position) {
return listaCliente.get(position).getCodigo();
}
public View getView(int position, View convertView, ViewGroup parent) {
Cliente cliente = listaCliente.get(position);
View v = inflater.inflate(R.layout.lista_cliente, null);
((TextView) v.findViewById(R.lista_cliente.txtCodigo)).setText(String.valueOf(cliente.getCodigo()));
((TextView) v.findViewById(R.lista_cliente.txtNome)).setText(String.valueOf(cliente.getNome()));
return v;
}
}
depois você ao clicar em pesquisar na sua Activity faz isso:
seuListView.setAdapter(new ClienteAdapter(this, suaLista));
agora preste atenção nesta parte do código da classe ClienteAdapter:
public View getView(int position, View convertView, ViewGroup parent) {
Cliente cliente = listaCliente.get(position);
View v = inflater.inflate(R.layout.lista_cliente, null);
((TextView) v.findViewById(R.lista_cliente.txtCodigo)).setText(String.valueOf(cliente.getCodigo()));
((TextView) v.findViewById(R.lista_cliente.txtNome)).setText(String.valueOf(cliente.getNome()));
return v;
}
esse R.layout.lista_cliente nada mais é do que um layout comun, e isso R.lista_cliente.txtCodigo, serio o campo desse layout.
Blza!!!
Meu codigo esta desse jeito que vc me falou.
So que quando eu clico nao esta chamando o metodo que trata o dado selecionado.
Onde que esta o erro?
Segue o codigo
package br.com.ces.pdv;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import br.com.ces.pdv.adapter.AdapterClienteListView;
import br.com.ces.pdv.controle.ContextoDados;
import br.com.ces.pdv.modelo.Cliente;
public class ClienteFragmento extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating layout
final View view = inflater.inflate(R.layout.fragmento_pedido_cliente,
container, false);
// We obtain layout references
final ListView listView = (ListView) view.findViewById(R.id.listViewCliente);
listView.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
TextView clienteSelecionado = (TextView) view.findViewById(R.id.textViewClienteSelecionado);
int selecionado = arg2;
clienteSelecionado.setText(String.valueOf(selecionado));
Toast.makeText(view.getContext(), ("ITEM:"+arg2), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
Button pesquisarCliente = (Button) view.findViewById(R.id.buttonPesquisarCliente);
pesquisarCliente.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
EditText nomeDoCliente = (EditText) view.findViewById(R.id.editTextPesquisaCliente);
String nomeCliente = nomeDoCliente.getText().toString();
final List<Cliente> lista = buscarClientePeloNome(view.getContext(),nomeCliente);
AdapterClienteListView adapterClienteListView = new AdapterClienteListView(view.getContext(), lista);
listView.setAdapter(adapterClienteListView);
//listView.setSelector( R.drawable.lista_cores);
//listView.setFocusable(true);
}
});
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
private List<Cliente> buscarClientePeloNome(Context context,String nome){
List<Cliente> lista = new ContextoDados(context).buscarClientePeloNome(nome);
return lista;
}
}
segue tambem a declaracao do meu listview
<ListView
android:id="@+id/listViewCliente"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="35dip"
android:layout_marginTop="5dip"
android:layout_weight="1"
android:clickable="true"/>
Tenta criar uma classe filha do BaseAdapter(Na postagem de cima) e não de um Fragment.