Android POCs (Proof of Concepts)

ListViewSelect-Toast_Position_ContextMenu

Short press a list item to show a toast. Long press to popup a ContextMenu for making the item selected all caps or removing it. A ListView setAdapter is set to an ArrayList of a string array. The ListView object has a setOnItemClickListener onItemClick(..) event present a Toast for a short press. Registration for the ContextMenu is made by registerForContextMenu(..) on the ListView object. The registration requires both onCreateContextMenu(..) for the menu inflate and onContextItemSelected(..) for the long press response to be defined.

download  or   install to your Android





ListViewSelect-Toast_Position_ContextMenu/src/com/brainyideas/dev/poc/lvstpcm/ToastPositionContextMenu.java
package com.brainyideas.dev.poc.lvstpcm;

import java.util.ArrayList;

import com.brainyideas.dev.poc.lvstacmpu.R;

import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;


public class ToastPositionContextMenu extends Activity {

	private ListView lv1;
	private ArrayList<String> words = null;
	private String[] lv_arr = { "Android", "iPhone", "Android Tablet", "iPad", "iPod Touch", "Nano", "Shuffle"};

	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		init();
	}

	void init() {

		// convert the String array to an ArrayList<String>
		words = new ArrayList<String>();
		for (String s : lv_arr) {
			words.add(s);
		}
		
		// setup the ListView
		lv1 = (ListView) findViewById(R.id.ListView01);
		lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, words));
		lv1.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {

				Toast.makeText(getApplicationContext(),
						((TextView) view).getText(), Toast.LENGTH_SHORT).show();
			}
		});
		registerForContextMenu(lv1);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

		super.onCreateContextMenu(menu, v, menuInfo);

		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.layout.menu, menu);

/* alternately, build menu programmatically
		menu.setHeaderTitle("Context Menu");
		menu.add(0, v.getId(), 0, "Action 1");
		menu.add(0, v.getId(), 0, "Action 2");
*/
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {

		AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
		ArrayAdapter<String> adapter = (ArrayAdapter<String>) lv1.getAdapter();
		
		switch (item.getItemId()) {
		
			case R.id.caps:

				String word = words.get(info.position); 
				word = word.toUpperCase();
				adapter.remove(words.get(info.position)); 
				adapter.insert(word, info.position); 
				return (true);

			case R.id.remove:

				adapter.remove(words.get(info.position)); 
				return (true); }
		
		return (super.onContextItemSelected(item));
	}
}


ListViewSelect-Toast_Position_ContextMenu/res/layout/main.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"
    >

	<ListView 
		android:id="@+id/ListView01" 
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content" />

</LinearLayout>