Подтвердить что ты не робот

Получение элемента из списка массивов в Android?

Я пытаюсь внедрить код распознавания голоса в Android. Как получить элемент в определенной позиции из списка массивов в Android? Я попытался преобразовать arraylist в array и восстановить. Тем не менее код не работает.

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);
    }
    }
4b9b3361

Ответ 1

Возможно, вам поможет следующее.

arraylistname.get(position);

Ответ 2

Насколько я понимаю, ваш вопрос заключается в том, что вы хотите получить элемент в ArrayList в определенном месте.

Предположим, что ваш список содержит целые числа 1,2,3,4,5, и вы хотите получить значение 3. Затем будут работать следующие строки кода.

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
        }

В любом случае вы можете использовать list.get(list.lastIndexOf(3))

Ответ 3

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);

Это еще один способ получить элемент

        Iterator<String> it = al.iterator();
        while (it.hasNext()) {
            System.out.println("Data is "+ it.next());
        }
    }

Ответ 4

В arraylist у вас есть позиционный порядок, а не номинальный порядок, поэтому вам нужно заранее знать позицию элемента, которую нужно выбрать, или вы должны зацикливаться между элементами, пока не найдете элемент, который вам нужно использовать. Для этого вы можете использовать итератор и if, например:

Iterator iter = list.iterator();
while (iter.hasNext())
{
    // if here          
    System.out.println("string " + iter.next());
}

Ответ 5

Не попробуйте это

for (WordList i : words) {
     words.get(words.indexOf(i));
 }

Ответ 6

У меня есть список позиций массива для извлечения. Это сработало для меня.

  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);

}