मेरे पास एक सूची दृश्य है, जो डेटाबेस से डेटा दिखाता है।एस्प्रेसो। 'लोड एडाप्टर डेटा' करने में त्रुटि
db = new DB(this);
db.open();
String[] from = new String[]{DB.COLUMN_FIRSTNAME, DB.COLUMN_LASTNAME};
int[] to = new int[]{android.R.id.text1, android.R.id.text2};
scAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_activated_2, null, from, to, 0);
lvData = (ListView) findViewById(R.id.lvData);
lvData.setAdapter(scAdapter);
lvData.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
lvData.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
यह मदों की एक सूची के रूप में डेटाबेस से पहले नाम और अंतिम नाम पता चलता है: Click to UI
तो, आज मैं इस एप्लिकेशन के साथ एस्प्रेसो का उपयोग करने की कोशिश की और मैं के लिए एक रास्ता नहीं मिल रहा है टेक्स्ट युक्त आइटम पर क्लिक करें।
जब मैं का उपयोग करें:
onData(anything())
.inAdapterView(withId(R.id.lvData))
.atPosition(3)
.perform(click());
यह पूरी तरह से काम करता है। लेकिन मैं संबंधित आइटम के टेक्स्ट वाले आइटम पर क्लिक करना चाहता हूं।
क्या मैं अब तक की कोशिश की (सब कुछ मैं stackoverflow पर मिल गया है, गूगल, GitHub, आदि):
onView(allOf(withText("Ivan Ivanov"))).perform(click())
onData(allOf(is(instanceOf(MainActivity.class)),is("Ivan Ivanov")))
.inAdapterView(withId(R.id.lvData))
.perform(click());
onData(hasToString(startsWith("v")))
.inAdapterView(withId(R.id.lvData))
.atPosition(0).perform(click());
onData(instanceOf(MainActivity.class))
.inAdapterView(withId(R.id.lvData))
.atPosition(0)
.check(matches(hasDescendant(withText("Ivan Ivanov"))));
onData(anything()).inAdapterView(withContentDescription("Ivan Ivanov"))
.atPosition(0).perform(click());
तो, शायद वहाँ स्ट्रिंग "इवान इवानोव" और आइटम के बीच मतभेद रहे हैं , जिसमें डेटाबेस से डेटा शामिल है: firstName
+ lastName
?
यह काम करता है। धन्यवाद! – pligosv