[RESOLVIDO][ANDROID] Ajuda com Scroll de pesquisa personalizado

8 respostas
pedrohms

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.

8 Respostas

Marky.Vasconcelos

Qual componente voce está usando para isso?

Uma ListView irá carregar as novas Views enquanto for scrollando.

pedrohms

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.

Marky.Vasconcelos

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.

pedrohms

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

Marky.Vasconcelos

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.

pedrohms

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&lt;SearchObject&gt; so = new ArrayList&lt;SearchObject&gt;();
	    	ListView lv = new ListView(this);
	    	cursor.moveToFirst();
	    	int count = 0;
	    	while(!(cursor.isLast()) && count &lt; 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

Marky.Vasconcelos

No getView do Adapter estou inflando um XML que é um LinearLayout que representa cada linha da tabela.

pedrohms

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.

Criado 1 de setembro de 2011
Ultima resposta 5 de set. de 2011
Respostas 8
Participantes 2