Voce está ignorando o mecanismo de reutilização de Views da listview, isso deixa o scroll lento e o consumo de memória potencialmente alto. Pra utilizar corretamente, quando a sua convertView for null vc cria o elemento, e fora do if vc configura o conteúdo do mesmo como o texto, retornando a convertView ao invés de null.
Em quarta-feira, 27 de março de 2013 16h35min00s UTC-3, Kleverso...@gmail.com escreveu:
--Mauricio acho que o 'return null', não seria. Porque se eu fizer um extend ListActivity ao inves de extend Activity. Ele funciona e faz o adapter normalmente.
2013/3/27 Mauricio Hiroshi Nagaoka <mhna...@gmail.com>Não seria o "return null" no final do método getView do seu adapter?
On Wed, Mar 27, 2013 at 4:25 PM, kleverso...@gmail.com
<kleverso...@gmail.com> wrote:
> Bruno o strack trace:
>
> 03-27 16:24:10.172: E/AndroidRuntime(327): FATAL EXCEPTION: main
> 03-27 16:24:10.172: E/AndroidRuntime(327): java.lang.NullPointerException
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.AbsListView.obtainView(AbsListView.java: 1419)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.ListView.measureHeightOfChildren( ListView.java:1216)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.ListView.onMeasure(ListView.java:1127)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.View.measure(View.java:8313)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.ViewGroup.measureChildWithMargins( ViewGroup.java:3138)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.LinearLayout.measureChildBeforeLayout( LinearLayout.java:1017)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.LinearLayout.measureVertical(LinearLayout. java:386)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.LinearLayout.onMeasure(LinearLayout.java: 309)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.View.measure(View.java:8313)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.ViewGroup.measureChildWithMargins( ViewGroup.java:3138)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.FrameLayout.onMeasure(FrameLayout.java: 250)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.View.measure(View.java:8313)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.ViewGroup.measureChildWithMargins( ViewGroup.java:3138)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.widget.FrameLayout.onMeasure(FrameLayout.java: 250)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.View.measure(View.java:8313)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.ViewRoot.performTraversals(ViewRoot. java:839)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.view.ViewRoot.handleMessage(ViewRoot.java: 1859)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.os.Handler.dispatchMessage(Handler.java: 99)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.os.Looper.loop(Looper.java:123)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> android.app.ActivityThread.main(ActivityThread.java:3683)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> java.lang.reflect.Method.invokeNative(Native Method)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> java.lang.reflect.Method.invoke(Method.java:507)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run( ZygoteInit.java:839)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> com.android.internal.os.ZygoteInit.main(ZygoteInit. java:597)
> 03-27 16:24:10.172: E/AndroidRuntime(327): at
> dalvik.system.NativeStart.main(Native Method)
>
>
>
> 2013/3/27 Bruno Albuquerque <bruno.al...@gmail.com>
>>
>> Aparece a linha sim: AbsListView.java:1419
>>
>> Cole o stack trace inteiro aqui e vai ser mais fácil te ajudar.
>>
>>
>>
>> 2013/3/27 kleverso...@gmail.com <kleverso...@gmail.com>
>>
>>> Ele não diz a linha: aparece isso no log:
>>> android.widget.AbsListView.obtainView(AbsListView.java: 1419). Já teve algum
>>> problema parecido?
>>>
>>>
>>> 2013/3/27 Diogo Henrique <diog...@gmail.com>
>>>>
>>>> O seu NullPointer e exatamente aonde ? pelo LogCat você consegue ver
>>>> exatamente a linha.
>>>> Aqui tem um exemplo desse evento que você quer pegar.
>>>> http://www.ezzylearning.com/tutorial.aspx?tid=1351248
>>>>
>>>> Diogo Henrique
>>>> (83)87344178
>>>> Rede Sociais:
>>>> about.me/D.H
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2013/3/27 Kleverso...@gmail.com <kleverso...@gmail.com>
>>>>>
>>>>> Galera, sou novo aqui. E já começo enchendo a paciencia com dúvidas,
>>>>> ainda sou novo também em termos de programar para android. sou da area de
>>>>> web. Enfim, to com 2 problemas com um Base Adapter. O primeiro. Por alguma
>>>>> razão ao acessar a essa view ele esta dando 'NullPointerException', procurei
>>>>> e não encontro a causa. A minha outra situação é. Como fazer um
>>>>> 'onItemCLickListener' nessa ListView. Podem me ajudar.
>>>>>
>>>>> Segue o código:
>>>>> * Esse é o Item que vai entrar no ListView
>>>>> category_item.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:orientation="vertical" >
>>>>>
>>>>> <LinearLayout android:id="@+id/Category_item"
>>>>> android:layout_width="fill_parent"
>>>>> android:layout_height="fill_parent"
>>>>> android:padding="3dip"
>>>>> android:layout_marginRight="5dip">
>>>>>
>>>>>
>>>>> <Button
>>>>> android:id="@+id/Delete_category"
>>>>> android:layout_width="wrap_content"
>>>>> android:layout_height="wrap_content"
>>>>> android:text="Deletar"
>>>>> />
>>>>>
>>>>>
>>>>> <TextView
>>>>> android:id="@+id/Category_title"
>>>>> android:layout_width="wrap_content"
>>>>> android:layout_height="wrap_content"
>>>>> android:text="@string/description"
>>>>> android:textColor="#000000"
>>>>> android:paddingTop="13dip"
>>>>> android:paddingBottom="13dip"
>>>>> android:typeface="sans"
>>>>> android:textSize="16sp"
>>>>> android:textStyle="bold" />
>>>>>
>>>>>
>>>>> </LinearLayout>
>>>>>
>>>>> </LinearLayout>
>>>>>
>>>>> category.xml
>>>>> * A view onde esta o ListView
>>>>> <?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:orientation="vertical" >
>>>>> <LinearLayout
>>>>> android:layout_width="match_parent"
>>>>> android:layout_height="wrap_content"
>>>>> >
>>>>> <Button
>>>>> android:id="@+id/menu"
>>>>> android:layout_width="wrap_content"
>>>>> android:layout_height="wrap_content"
>>>>> android:text="Menu"
>>>>> android:layout_gravity="right"
>>>>> />
>>>>> <TextView
>>>>> android:id="@+id/titleCategory"
>>>>> android:layout_width="fill_parent"
>>>>> android:layout_height="wrap_content"
>>>>> android:text="CATEGORIES"
>>>>>
>>>>> android:textAppearance="?android:attr/ textAppearanceLarge"
>>>>> android:gravity="center_horizontal"
>>>>> />
>>>>> </LinearLayout>
>>>>>
>>>>> <LinearLayout
>>>>> android:layout_width="fill_parent"
>>>>> android:layout_height="wrap_content"
>>>>> android:layout_marginTop="30dp"
>>>>> >
>>>>> <EditText
>>>>> android:id="@+id/CategoryName"
>>>>> android:layout_width="wrap_content"
>>>>> android:layout_height="wrap_content"
>>>>> android:hint="Create new category..."
>>>>> />
>>>>>
>>>>> <Button
>>>>> android:id="@+id/SaveCategory"
>>>>> android:layout_width="wrap_content"
>>>>> android:layout_height="wrap_content"
>>>>> android:text="Salvar"
>>>>> android:layout_gravity="right"
>>>>> />
>>>>>
>>>>> </LinearLayout>
>>>>> <ListView
>>>>> android:id="@+id/category_list"
>>>>> android:layout_width="fill_parent"
>>>>> android:layout_height="wrap_content"
>>>>> ></ListView>
>>>>> </LinearLayout>
>>>>>
>>>>>
>>>>> Adapter
>>>>> package com.prayer.adapter;
>>>>>
>>>>> import java.util.ArrayList;
>>>>> import java.util.HashMap;
>>>>>
>>>>> import android.app.Activity;
>>>>> import android.content.Context;
>>>>> import android.view.LayoutInflater;
>>>>> import android.view.View;
>>>>> import android.view.ViewGroup;
>>>>> import android.widget.BaseAdapter;
>>>>> import android.widget.Button;
>>>>> import android.widget.TextView;
>>>>>
>>>>> import com.prayer.activity.CategoryListActivity;
>>>>> import com.prayer.activity.R;
>>>>>
>>>>> public class CategoryAdapter extends BaseAdapter {
>>>>>
>>>>> private Activity activity;
>>>>> private ArrayList<HashMap<String,String>> data;
>>>>> private static LayoutInflater inflater = null;
>>>>> private Context context;
>>>>>
>>>>> public CategoryAdapter(Activity a,
>>>>> ArrayList<HashMap<String,String>> d)
>>>>> {
>>>>> activity = a;
>>>>> data = d;
>>>>> inflater = (LayoutInflater)
>>>>> activity.getSystemService(Context.LAYOUT_INFLATER_ SERVICE);
>>>>> }
>>>>>
>>>>> @Override
>>>>> public int getCount() {
>>>>> // TODO Auto-generated method stub
>>>>> return data.size();
>>>>> }
>>>>>
>>>>> @Override
>>>>> public Object getItem(int position) {
>>>>> // TODO Auto-generated method stub
>>>>> return position;
>>>>> }
>>>>>
>>>>> @Override
>>>>> public long getItemId(int position) {
>>>>> // TODO Auto-generated method stub
>>>>> return position;
>>>>> }
>>>>>
>>>>> @Override
>>>>> public View getView(int position, View convertView, ViewGroup
>>>>> parent) {
>>>>> // TODO Auto-generated method stub
>>>>> View vi = convertView;
>>>>>
>>>>> if(convertView == null)
>>>>> {
>>>>> vi = inflater.inflate(R.layout.category_item,
>>>>> null);
>>>>>
>>>>> Button Delete_category;
>>>>> TextView Category_title;
>>>>>
>>>>> Delete_category = (Button)
>>>>> vi.findViewById(R.id.Delete_category);
>>>>> Category_title = (TextView)
>>>>> vi.findViewById(R.id.Category_title);
>>>>>
>>>>> HashMap<String, String> category = new
>>>>> HashMap<String,String>();
>>>>>
>>>>> category = data.get(position);
>>>>> String text =
>>>>> category.get(CategoryListActivity.Key_ category).toString();
>>>>> Category_title.setText(text);
>>>>> return vi;
>>>>>
>>>>> }
>>>>>
>>>>> return null;
>>>>> }
>>>>>
>>>>> }
>>>>>
>>>>> Activity
>>>>> package com.prayer.activity;
>>>>>
>>>>> import java.text.SimpleDateFormat;
>>>>> import java.util.ArrayList;
>>>>> import java.util.Date;
>>>>> import java.util.HashMap;
>>>>>
>>>>> import android.app.Activity;
>>>>> import android.app.AlertDialog;
>>>>> import android.content.Intent;
>>>>> import android.database.Cursor;
>>>>> import android.os.Bundle;
>>>>> import android.view.View;
>>>>> import android.view.View.OnClickListener;
>>>>> import android.widget.AdapterView;
>>>>> import android.widget.AdapterView.OnItemClickListener;
>>>>> import android.widget.Button;
>>>>> import android.widget.EditText;
>>>>> import android.widget.ListAdapter;
>>>>> import android.widget.ListView;
>>>>> import android.widget.Toast;
>>>>>
>>>>> import com.prayer.adapter.CategoryAdapter;
>>>>> import com.prayer.database.Database;
>>>>> import com.prayer.database.dataBaseManager;
>>>>>
>>>>> public class CategoryListActivity extends Activity implements
>>>>> OnClickListener
>>>>> {
>>>>>
>>>>> ArrayList<HashMap<String, String>> category = new
>>>>> ArrayList<HashMap<String,String>>();
>>>>> Button SaveCategory, menu, Delete_category;
>>>>> EditText CategoryName;
>>>>> ListAdapter adapter;
>>>>> ListView category_list;
>>>>> public static final String Key_category = "name";
>>>>> public Database database = new Database(new
>>>>> dataBaseManager(this));
>>>>>
>>>>> //public static final String Key_count = null;
>>>>>
>>>>> public void onCreate(Bundle savedInstanceState)
>>>>> {
>>>>> super.onCreate(savedInstanceState);
>>>>> setContentView(R.layout.category);
>>>>>
>>>>> category_list = (ListView)
>>>>> findViewById(R.id.category_list);
>>>>> CategoryName = (EditText)
>>>>> findViewById(R.id.CategoryName);
>>>>>
>>>>> SaveCategory = (Button)
>>>>> findViewById(R.id.SaveCategory);
>>>>> SaveCategory.setOnClickListener(this);
>>>>>
>>>>> menu = (Button) findViewById(R.id.menu);
>>>>> menu.setOnClickListener(this);
>>>>>
>>>>> Delete_category = (Button)
>>>>> findViewById(R.id.Delete_category);
>>>>>
>>>>>
>>>>> database.open();
>>>>> Cursor categoryItem = database.getAllCategory();
>>>>>
>>>>> if(categoryItem.moveToFirst())
>>>>> {
>>>>> do{
>>>>> HashMap<String, String> map = new
>>>>> HashMap<String, String>();
>>>>> map.put(Key_category,
>>>>> categoryItem.getString(1));
>>>>> category.add(map);
>>>>> }while(categoryItem.moveToNext());
>>>>>
>>>>> adapter = new CategoryAdapter(this, category);
>>>>> category_list.setAdapter(adapter);
>>>>> }
>>>>>
>>>>> database.close();
>>>>> }
>>>>>
>>>>> //implements method of OnClick
>>>>> @Override
>>>>> public void onClick(View v) {
>>>>> switch(v.getId())
>>>>> {
>>>>> case R.id.SaveCategory:
>>>>> save();
>>>>> break;
>>>>> case R.id.menu:
>>>>> Intent intent = new Intent(this,
>>>>> MenuActivity.class);
>>>>> startActivity(intent);
>>>>> break;
>>>>> }
>>>>> }
>>>>>
>>>>> //method to save category in database
>>>>> public void save()
>>>>> {
>>>>> SimpleDateFormat date = new
>>>>> SimpleDateFormat("yyyyMMddHHmmss");
>>>>> String create_date = date.format(new Date());
>>>>>
>>>>> CategoryName = (EditText)
>>>>> findViewById(R.id.CategoryName);
>>>>> String category = CategoryName.getText().toString();
>>>>>
>>>>> database.open();
>>>>> try{
>>>>> database.insertCategory(create_date,
>>>>> category);
>>>>> msg("Aviso", "Categoria cadastrada com
>>>>> sucesso!");
>>>>> Intent intent = new Intent(this,
>>>>> CategoryListActivity.class);
>>>>> startActivity(intent);
>>>>> }catch(Exception e)
>>>>> {
>>>>> msg("Erro", "Categoria n‹o
>>>>> cadastrada");
>>>>> }
>>>>> database.close();
>>>>> }
>>>>>
>>>>> public void msg(String title, String text)
>>>>> {
>>>>> AlertDialog.Builder mensage = new
>>>>> AlertDialog.Builder(this);
>>>>> mensage.setTitle(title);
>>>>> mensage.setMessage(text);
>>>>> mensage.setNegativeButton("ok", null);
>>>>> mensage.show();
>>>>> }
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Android Brasil - Dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to androidbrasil-...@googlegroups.com .
>>>>> For more options, visit https://groups.google.com/groups/opt_out .
>>>>>
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Android Brasil - Dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to androidbrasil-...@googlegroups.com .
>>>> For more options, visit https://groups.google.com/groups/opt_out .
>>>>
>>>>
>>>
>>>
>>>
>>>
>>> --
>>> Att,
>>>
>>> Kleverson Holnda Costa
>>> Programador de Interface
>>> (61) 8446-5961
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Android Brasil - Dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to androidbrasil-...@googlegroups.com .
>>> For more options, visit https://groups.google.com/groups/opt_out .
>>>
>>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Android Brasil - Dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to androidbrasil-...@googlegroups.com .
>> For more options, visit https://groups.google.com/groups/opt_out .
>>
>>
>
>
>
>
> --
> Att,
>
> Kleverson Holnda Costa
> Programador de Interface
> (61) 8446-5961
>
> --
> You received this message because you are subscribed to the Google Groups
> "Android Brasil - Dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to androidbrasil-...@googlegroups.com .
> For more options, visit https://groups.google.com/groups/opt_out .
>
>
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/groups/opt_out .
--
Att,Kleverson Holnda CostaProgramador de Interface(61) 8446-5961
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário