Olá pessoal, tudo bem? To com um pequeno problema. Criei uma tela de pesquisa na minha aplicacao mas qndo a pesquisa e muito grande, da erro de OutOfMemory. Alguém conhece como o Market faz pra fazer aquele scroll? Tipo quando chega no fim, puxa mais items ? Algué me ajude por favor. Se alguem ja tiver nem q seja parecido ou do porque ta dando OutOfMemory post por favor um pedaco do codigo ou algum caminho.
[RESOLVIDO][ANDROID] Ajuda com Scroll de pesquisa personalizado
8 Respostas
Qual componente voce está usando para isso?
Uma ListView irá carregar as novas Views enquanto for scrollando.
Obrigado por responder marky.
Olha, to ultilizando um ScrollView e inserindo os TextView com LinearLayout nele, pois quero q cada item tenha duas descricoes. Se eu mudar para listView eu conseguiria inserir varios Layouts ? E outra como a adicao e dinamica, teria algum evento do listview que eu iria ultilizar para fazer a insercao ? Se você tiver algum exemplo me envie por favor, to precisando muito disso pra mim terminar meu projeto. Fico no aguardo.
Da uma olhada nesse exemplo que fiz com a Gallery:
Ele usa um Adapter que cria ImageViews para serem colocadas na Gallery, voce vai fazer algo parecido com o ListView.
Voce pode implementar o layout das Views das linhas do ListView via XML (Dai infla com Inflate) ou então programaticamente mesmo.
Obrigado pela resposta marky.
Ainda estou com algums problemas. Gerei um ListAdapter, e tal mas nao se como seria isso ao certo. No post que você criou voce esta usando um gallery e tal, no meu caso quero ultilizar ou um ListView ou um ScrollView. (ListAdapter)http://pastebin.com/kHRmEJFY e (SearchProvider)http://pastebin.com/9tPxD1ws e o XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layoutSearch">
<TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/lblSearch" android:text="TextView"></TextView>
</LinearLayout>
A unica coisa pra mim terminar o meu projeto é isso. Se poder dar uma dica ficaria muito grato
Só para voce ter idéia, esse é um Adapter que eu uso em uma ListView.
public class BookAdapter extends ArrayAdapter<LibraryItem> {
private List<LibraryItem> books;
public BookAdapter(Context c, List<LibraryItem> books) {
super(c, R.layout.book_list_view, books);
this.books = books;
}
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout layout = null;
if (convertView == null)
layout = (RelativeLayout) LayoutInflater.from(getContext())
.inflate(R.layout.book_list_view, null);
else
layout = (RelativeLayout) convertView;
layout.setBackgroundResource(position % 2 == 0 ? R.drawable.background_dark
: R.drawable.background_light);
final LibraryItem book = getItem(position);
ImageView image = (ImageView) layout.findViewById(R.id.book_cover);
TextView title = (TextView) layout.findViewById(R.id.title);
TextView author = (TextView) layout.findViewById(R.id.author);
image.setImageBitmap(book.getThumb());
//Coloca valor nos outros campos
return layout;
}
public LibraryItem getItem(int id) {
return books.get(id);
}
public void setData(List<LibraryItem> books) {
this.books = books;
notifyDataSetChanged();
}
public int getCount() {
return books.size();
}
public long getItemId(int position) {
return position;
}
}
O layout foi feito via XML e eu pego os campos e altero desse modo.
Ola marky, valeu pela resposta.
Olha, só pode ser brincadeira, ainda não deu certo. Neste exato momento estou me sentindo limitado kkkkk.
A mensagem de erro é essa: android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0024 type #0x12 is not valid.
To inicializando o adapter assim:
cursor.moveToFirst();
ArrayList<SearchObject> so = new ArrayList<SearchObject>();
ListView lv = new ListView(this);
cursor.moveToFirst();
int count = 0;
while(!(cursor.isLast()) && count < 6){
if(!(cursor.isFirst()))
cursor.moveToNext();
so.add(new SearchObject(cursor.getString(1)));
count++;
}
lv.setAdapter(new SearchAdapter(this, R.id.layoutSearch, so));
No seu codigo vc ta ultilizando qual View no adapter ? e um Linear ou um list no xml ?
Desde já agradeco
No getView do Adapter estou inflando um XML que é um LinearLayout que representa cada linha da tabela.
Olá pessoal. Resolvi o problema. O problema é que eu estava ultilizando o id do LinearLayout para inicializar o ArrayAdapter, mas era pra ultilizar o R.layout.layout para ele inflar por direto no view ele da erro igual a esse: android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0024 type #0x12 is not valid.