android شرح - استرجاع عنصر من قائمة صفيف في الروبوت؟




arraylist in (5)

أحاول تنفيذ رمز التعرف على الصوت في الروبوت. كيف يمكنني الحصول على عنصر في موضع معين من قائمة مصفوفة في الروبوت؟ حاولت تحويل array إلى 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);
    }
    }

Answers

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

U غير قادر على محاولة هذا

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

في أرايليست لديك ترتيب الموضعية وليس النظام الاسمية، لذلك تحتاج إلى معرفة مقدما موقف العنصر تحتاج إلى تحديد أو يجب حلقة بين العناصر حتى تجد العنصر الذي تحتاج إلى استخدام. للقيام بذلك، يمكنك استخدام أداة تكرارية وإذا كان، على سبيل المثال:

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

ما أفهمه سؤالك هو أنك تريد جلب عنصر في 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))


يجب أن تكون النتائج في الحزمة باستخدام مفتاح SpeechRecognizer.RESULTS_RECOGNITION .

@Override
public void onResults(Bundle results) {
    if (results != null && results.containsKey(SpeechRecognizer.RESULTS_RECOGNITION)) {
      List<String> resultsList = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
      // most likely result is resultsList.get(0)
    } else {
      // no results
    }

}

راجع وثائق مطوري برامج Android الخاصة بـ SpeechRecognizer لتشرحها بالتفصيل. تعمل هذه الطريقة للحصول على نتائج التعرف على الكلام أيضًا على النتائج الجزئية في #onPartialResults







android arraylist