8

मैं एक गतिशील रूप से जेनरेट Spinner का परीक्षण करने की कोशिश कर रहा हूं। मैं स्पिनर पर क्लिक करने में सक्षम हूं लेकिन फिर मुझे दिखाए गए किसी दिए गए टेक्स्ट के साथ सूची में से एक विकल्प चुनना होगा (मुझे पदानुक्रमकर्ता से पता चला है कि पॉपअपविंडो दिखाया गया है लेकिन ऑफस्क्रीन के आवश्यक टेक्स्ट तक पहुंचने में असमर्थ हूं) । स्पिनर, कस्टम वस्तुओं (कोड के नीचे) के एक ArrayAdapter,एस्प्रेसो गतिशील स्पिनर परीक्षण

public class MainActivity extends AppCompatActivity { 

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

     Spinner mySpinner = (Spinner) findViewById(R.id.my_spinner); 
     List<MyValue> list = Arrays.asList(
       new MyValue("One", "1"), 
       new MyValue("Two", "2"), 
       new MyValue("Three", "3"), 
       new MyValue("Four", "4"), 
       new MyValue("Five", "5"), 
       new MyValue("Six", "6"), 
       new MyValue("Seven", "7"), 
       new MyValue("Eight", "8"), 
       new MyValue("Nine", "9"), 
       new MyValue("Ten", "10"), 
       new MyValue("Eleven", "11"), 
       new MyValue("Twelve", "12"), 
       new MyValue("Thirteen", "13"), 
       new MyValue("Fourteen", "14"), 
       new MyValue("Fifteen", "15"), 
       new MyValue("Sixteen", "16"), 
       new MyValue("Seventeen", "17"), 
       new MyValue("Eighteen", "18"), 
       new MyValue("Nineteen", "19"), 
       new MyValue("Twenty", "20"), 
       new MyValue("Twenty One", "21") 
     ); 

     final ArrayAdapter<MyValue> adapter = new ArrayAdapter<>(this, 
       R.layout.dropdown_selected_item, 
       list); 
     mySpinner.setAdapter(adapter); 
     mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       Log.d("MySpinnerTest", "current = " + adapter.getItem(position)); 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) {} 
     }); 
    } 

    public class MyValue { 
     String name; 
     String code; 

     public MyValue(String name, String code) { 
      this.name = name; 
      this.code = code; 
     } 

     @Override 
     public String toString() { 
      return name; 
     } 
    } 
} 

मैं onData(withSpinnerText("Twenty")).perform(click()) साथ की कोशिश की लेकिन एक PerformException हो और मैं और कैसे सही एक दिया पाठ के आधार पर दृश्य मैच के लिए यह पता लगाने की कोशिश की का उपयोग करता स्पिनर में popupwindow लेकिन यह पता नहीं लगा सकता कि यह कैसे करें।

किसी भी मदद की सराहना की जाएगी।

TIA

+0

क्या आप देख रहे प्रदर्शन निष्पादन को संलग्न करना संभव है और स्पिनरटेक्स्ट मैचर के साथ? –

उत्तर

4

यह करने के लिए एक रास्ता मिल गया है और इसलिए करने के लिए उत्तर पोस्ट मेरा खुद का सवाल

मैं अपने वस्तु के लिए एक कस्टम मिलान बनाने के लिए किया था और उसके बाद का उपयोग करें कि के साथ onData()

public static Matcher<Object> withMyValue(final String expectedName) { 
    return new BoundedMatcher<Object, MyValue>(MyValue.class) { 

     @Override 
     public void describeTo(Description description) { 
      description.appendText("with expectedName: " + expectedName); 
     } 

     @Override 
     protected boolean matchesSafely(MyValue myValue) { 
      return myValue.getName().equalsIgnoreCase(expectedName); 
     } 
    }; 
} 

जो तब (लटकती प्रदर्शित करने के लिए स्पिनर पर क्लिक करने के बाद)

onData(withMyValue(field.name)).perform(click()); के रूप में इस्तेमाल किया जा सकता

0

ऐसा लगता है अपने स्पिनर कोई लटकती दृश्य है, इससे पहले कि mySpinner.setAdapter(adapter);

कृपया इस पंक्ति जोड़ें:

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
संबंधित मुद्दे