FACULDADE DE TECNOLOGIA SENAC PELOTAS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Tópicos Avançados em ADS Edécio Fernando Iepsen ============================== Exemplo ListView --------------------------- MainActivity.java import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.widget.adapterview; import android.widget.listview; import android.widget.toast; import java.util.arraylist; import java.util.list; public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { List<Produtos> produtos; ProdutosAdapter adapter; ListView lista; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // cria uma listview (via código) // lista = new ListView(this); // exibe esta listview na activity // setcontentview(lista); lista = (ListView) findviewbyid(r.id.lstprodutos); // instancia um produto e preenche alguns exemplos produtos = new ArrayList<Produtos>(); produtos.add(new Produtos("Batata", 10)); produtos.add(new Produtos("Iogurte", 15)); produtos.add(new Produtos("Leite", 24)); produtos.add(new Produtos("Cebola", 8)); produtos.add(new Produtos("Tomate", 12)); adapter = new ProdutosAdapter(this, produtos); lista.setadapter(adapter); lista.setonitemclicklistener(this); public void onitemclick(adapterview<?> adapterview, View view, int i, long l) { Produtos produto = (Produtos) adapterview.getitematposition(i); Toast.makeText(this, "Produto: " + produto.nome + " - Quant.: " + produto.quant, Toast.LENGTH_SHORT).show(); ------------------------------------------- activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="br.com.edecio.listadeprodutos.mainactivity"> <ListView android:id="@+id/lstprodutos"
></ListView> </RelativeLayout> ------------------------------------------- Produtos.java public class Produtos { public String nome; public int quant; public Produtos(String nome, int quant) { this.nome = nome; this.quant = quant; ------------------------------------------ item_produto.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent"> android:id="@+id/txtnome" android:layout_margintop="10dp"/> android:id="@+id/txtquant" android:layout_margintop="10dp" android:layout_alignparentend="true" android:layout_alignparenttop="true"/> </RelativeLayout> ---------------------------------------- ProdutosAdapter.java import android.content.context; import android.view.layoutinflater; import android.view.viewgroup; import android.widget.baseadapter; import org.w3c.dom.text; import java.util.list; public class ProdutosAdapter extends BaseAdapter{ Context ctx; List<Produtos> produtos; public ProdutosAdapter(Context ctx, List<Produtos> produtos) { this.ctx = ctx; this.produtos = produtos; public int getcount() { return produtos.size(); public Object getitem(int i) { return produtos.get(i); public long getitemid(int i) { return i; public View getview(int i, View view, ViewGroup viewgroup) { // obtém um produto Produtos produto = produtos.get(i);
ViewHolder holder = null; if (view == null) { view = LayoutInflater.from(ctx).inflate(R.layout.item_produto, null); holder = new ViewHolder(); holder.txtnome = (TextView) view.findviewbyid(r.id.txtnome); holder.txtquant = (TextView) view.findviewbyid(r.id.txtquant); view.settag(holder); else { holder = (ViewHolder)view.getTag(); // "carrega" o arquivo de layout a ser "inflado" e obtém o seu elemento raiz (RelativeLayout) // View linha = LayoutInflater.from(ctx).inflate(R.layout.item_produto, null); // obtém as views deste arquivo de layout // TextView txtnome = (TextView) linha.findviewbyid(r.id.txtnome); // TextView txtquant = (TextView) linha.findviewbyid(r.id.txtq uant); // atribui os dados do produto para estas views holder.txtnome.settext(produto.nome); holder.txtquant.settext(string.valueof(produto.quant)); return view; static class ViewHolder { TextView txtnome; TextView txtquant; ============================== Exemplo Acesso a Web Service (ainda em arquivo texto) Neste aplicativo deve-se alterar o arquivo AndroidManifest.xml acrescentando a uses-permission abaixo. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.edecio.gerentedeloja"> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsrtl="true" android:theme="@style/apptheme"> <activity android:name=".mainactivity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="br.com.edecio.gerentedeloja.mainactivity">
<Button android:id="@+id/btnconsulta" android:text="@string/consulta_total_do_dia" android:layout_margintop="10dp"/> android:id="@+id/txttotal" android:layout_margintop="20dp" android:textsize="20sp" /> </LinearLayout> package br.com.edecio.gerentedeloja; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.widget.button; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnconsulta; private TextView txttotal; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); btnconsulta = (Button) findviewbyid(r.id.btnconsulta); txttotal = (TextView) findviewbyid(r.id.txttotal); btnconsulta.setonclicklistener(this); public void onclick(view view) { GetTotal gt = new GetTotal(txtTotal); gt.execute("http://10.0.2.2/loja/total.php"); package br.com.edecio.gerentedeloja; import android.os.asynctask; import java.io.bufferedinputstream; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.malformedurlexception; import java.net.url; public class GetTotal extends AsyncTask<String, Void, String> { private TextView txt; public GetTotal(TextView textview) { this.txt = textview; protected String doinbackground(string... strings) { HttpURLConnection urlconnection = null; String total = ""; try { URL url = new URL(strings[0]); urlconnection = (HttpURLConnection) url.openconnection(); int code = urlconnection.getresponsecode(); // ok. url válida if (code == 200) {
InputStream in = new BufferedInputStream(urlConnection.getInputStream()); if (in!= null) { BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(in)); String linha=""; while (( linha = bufferedreader.readline())!= null) { total = total + linha; in.close(); catch (MalformedURLException e) { e.printstacktrace(); catch (IOException e) { e.printstacktrace(); finally { urlconnection.disconnect(); return total; protected void onpostexecute(string s) { txt.settext(s);