Переход с ListView в Activity не работает

Интерфейс, диалоги, темы, стили, меню
Ответить
Newbie89
Сообщения: 2
Зарегистрирован: 11 авг 2013, 02:24

Переход с ListView в Activity не работает

Сообщение Newbie89 » 11 авг 2013, 02:31

Я еще очень зеленая в этом деле: не могли бы Вы подсказать, как мне сделать так, чтобы я могла перейти с этого ListView в новую Activity, к примеру NewActivity.java.
Я знаю, что нужно использовать setOnItemClickListener или просто setOnClickListener. Но понятия не имею куда его вставить и что вписать. Помогите, потому что устала искать ответ....

Код: Выделить всё

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.util.LruCache;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.haarman.listviewanimations.itemmanipulation.OnDismissCallback;
import com.haarman.listviewanimations.itemmanipulation.SwipeDismissAdapter;
import com.haarman.listviewanimations.swinginadapters.prepared.SwingBottomInAnimationAdapter;

public class GoogleCardsActivity extends Activity implements OnDismissCallback {

	private GoogleCardsAdapter mGoogleCardsAdapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_googlecards);

		ListView listView = (ListView) findViewById(R.id.activity_googlecards_listview);

		mGoogleCardsAdapter = new GoogleCardsAdapter(this);
		SwingBottomInAnimationAdapter swingBottomInAnimationAdapter = new SwingBottomInAnimationAdapter(new SwipeDismissAdapter(mGoogleCardsAdapter, this));
		swingBottomInAnimationAdapter.setAbsListView(listView);

		listView.setAdapter(swingBottomInAnimationAdapter);

		mGoogleCardsAdapter.addAll(getItems());
	}

	private ArrayList<Integer> getItems() {
		ArrayList<Integer> items = new ArrayList<Integer>();
		for (int i = 0; i < 100; i++) {
			items.add(i);
		}
		return items;
	}

	@Override
	public void onDismiss(AbsListView listView, int[] reverseSortedPositions) {
		for (int position : reverseSortedPositions) {
			mGoogleCardsAdapter.remove(position);
		}
	}

	private static class GoogleCardsAdapter extends ArrayAdapter<Integer> {

		private Context mContext;
		private LruCache<Integer, Bitmap> mMemoryCache;

		public GoogleCardsAdapter(Context context) {
			mContext = context;

			final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

			// Use 1/8th of the available memory for this memory cache.
			final int cacheSize = maxMemory;
			mMemoryCache = new LruCache<Integer, Bitmap>(cacheSize) {
				@Override
				protected int sizeOf(Integer key, Bitmap bitmap) {
					// The cache size will be measured in kilobytes rather than
					// number of items.
					return bitmap.getRowBytes() * bitmap.getHeight() / 1024;
				}
			};
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder viewHolder;
			View view = convertView;
			if (view == null) {
				view = LayoutInflater.from(mContext).inflate(R.layout.activity_googlecards_card, parent, false);

				viewHolder = new ViewHolder();
				viewHolder.textView = (TextView) view.findViewById(R.id.activity_googlecards_card_textview);
				view.setTag(viewHolder);

				viewHolder.imageView = (ImageView) view.findViewById(R.id.activity_googlecards_card_imageview);
			} else {
				viewHolder = (ViewHolder) view.getTag();
			}

			viewHolder.textView.setText("This is card " + (getItem(position) + 1));
			setImageView(viewHolder, position);

			return view;
		}

		private void setImageView(ViewHolder viewHolder, int position) {
			int imageResId;
			switch (getItem(position) % 5) {
				case 0:
					imageResId = R.drawable.img_1;
					break;
				case 1:
					imageResId = R.drawable.img_2;
					break;
				case 2:
					imageResId = R.drawable.img_3;
					break;
				case 3:
					imageResId = R.drawable.img_4;
					break;
				default:
					imageResId = R.drawable.img_5;
			}

			Bitmap bitmap = getBitmapFromMemCache(imageResId);
			if (bitmap == null) {
				bitmap = BitmapFactory.decodeResource(mContext.getResources(), imageResId);
				addBitmapToMemoryCache(imageResId, bitmap);
			}
			viewHolder.imageView.setImageBitmap(bitmap);
		}

		private void addBitmapToMemoryCache(int key, Bitmap bitmap) {
			if (getBitmapFromMemCache(key) == null) {
				mMemoryCache.put(key, bitmap);
			}
		}

		private Bitmap getBitmapFromMemCache(int key) {
			return mMemoryCache.get(key);
		}

		private static class ViewHolder {
			TextView textView;
			ImageView imageView;
		}
	}
	
}

JDev
Сообщения: 88
Зарегистрирован: 05 авг 2012, 19:42

Re: Переход с ListView в Activity не работает

Сообщение JDev » 13 авг 2013, 00:29

[syntax=java]//добавить implements OnItemClickListener
//дальше
listView.setOnItemClickListener(this);
//автоматически попросит добавить вот такую ф-цию

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//position - номер кликнутого элемента
//отсюда грузим активити, если нужно передать какой параметр в активити, то для примера вот так.
Intent inient = new Intent(this, NewActivity.class);
inient.putExtra("pName", ame);
startActivity(inient);
}[/syntax]

вроде все что вам нужно, при условии что остальной код работает. ))

Newbie89
Сообщения: 2
Зарегистрирован: 11 авг 2013, 02:24

Re: Переход с ListView в Activity не работает

Сообщение Newbie89 » 13 авг 2013, 10:40

JDev писал(а):[syntax=java]//добавить implements OnItemClickListener
//дальше
listView.setOnItemClickListener(this);
//автоматически попросит добавить вот такую ф-цию

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//position - номер кликнутого элемента
//отсюда грузим активити, если нужно передать какой параметр в активити, то для примера вот так.
Intent inient = new Intent(this, NewActivity.class);
inient.putExtra("pName", ame);
startActivity(inient);
}[/syntax]

вроде все что вам нужно, при условии что остальной код работает. ))

СПАСИБО! Буду разбирать это все. Еще раз спасибки!!!

Ответить