Reputation: 191
I am trying to implement voice recognition code in Android. How do I get an element at a particular position from array list in Android? I tried converting arraylist
to array
and retriving. Still the code is not working.
package com.espeaker;
public class EspeakerActivity extends Activity {
private static final int REQUEST_CODE = 1234;
private ListView wordsList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speakButton = (Button) findViewById(R.id.speakButton);
wordsList = (ListView) findViewById(R.id.list);
// Disable button if no recognition service is present
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() == 0)
{
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}
}
/**
* Handle the action of the button being clicked
*/
public void speakButtonClicked(View v)
{
startVoiceRecognitionActivity();
}
/**
* Fire an intent to start the voice recognition activity.
*/
private void startVoiceRecognitionActivity()
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo...");
startActivityForResult(intent, REQUEST_CODE);
}
/**
* Handle the results from the voice recognition activity.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
{
// Populate the wordsList with the String values the recognition engine thought it heard
ArrayList<String> matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
matches));
String[] array=matches.toArray(new String[matches.size()]);
// ArrayList<String> places = new ArrayList<String>(
// Arrays.asList("black", "blue", "red"));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item,matches);
final AutoCompleteTextView input_text = (AutoCompleteTextView) findViewById(R.id.auto);
Button button1 = (Button) findViewById(R.id.button1);
input_text.setAdapter(adapter);
button1.setText(" "+array[0]);
// button1.setText(""+matches);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
Upvotes: 17
Views: 126597
Reputation: 1855
I have a list of positions of array to retrieve ,This worked for me.
public void create_list_to_add_group(ArrayList<Integer> arrayList_loc) {
//In my case arraylist_loc is the list of positions to retrive from
// contact_names
//arraylist and phone_number arraylist
ArrayList<String> group_members_list = new ArrayList<>();
ArrayList<String> group_members_phone_list = new ArrayList<>();
int size = arrayList_loc.size();
for (int i = 0; i < size; i++) {
try {
int loc = arrayList_loc.get(i);
group_members_list.add(contact_names_list.get(loc));
group_members_phone_list.add(phone_num_list.get(loc));
} catch (Exception e) {
e.printStackTrace();
}
}
Log.e("Group memnbers list", " " + group_members_list);
Log.e("Group memnbers num list", " " + group_members_phone_list);
}
Upvotes: 2
Reputation: 109
U cant try this
for (WordList i : words) {
words.get(words.indexOf(i));
}
Upvotes: -1
Reputation: 31
In arraylist you have a positional order and not a nominal order, so you need to know in advance the element position you need to select or you must loop between elements until you find the element that you need to use. To do this you can use an iterator and an if, for example:
Iterator iter = list.iterator();
while (iter.hasNext())
{
// if here
System.out.println("string " + iter.next());
}
Upvotes: 2
Reputation: 4334
What I understand your question is that you want to fetch an element in an ArrayList
at a specific location.
Suppose your list contains Integers 1,2,3,4,5 and you want to fetch the value 3. Then the following lines of code will work.
ArrayList<Integer> list = new ArrayList<Integer>();
if(list.contains(3)){//check if the list contains the element
list.get(list.indexOf(3));//get the element by passing the index of the element
}
Either ways you could use list.get(list.lastIndexOf(3))
Upvotes: 12
Reputation: 6901
public class DemoActivity extends Activity {
/** Called when the activity is first created. */
ArrayList<String> al = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// add elements to the array list
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
// retrieve elements from array
String data = al.get(pass the index here);
System.out.println("Data is "+ data);
This is another way of getting element
Iterator<String> it = al.iterator();
while (it.hasNext()) {
System.out.println("Data is "+ it.next());
}
}
Upvotes: 4