我在一个 android 应用程序的 UI 上显示了以下列表,该列表讲述了该日期的日期和温度。
temp degree
11/01 --.-- c
11/02 21.7 c
11/03 22.5 c
在这里我想找到字符串的位置"--.--"
然后点击它,这样我就可以更新列表了。有没有办法找到字符串的位置?我知道这solo.searchText()
会告诉字符串是否存在,但是位置呢?
我在一个 android 应用程序的 UI 上显示了以下列表,该列表讲述了该日期的日期和温度。
temp degree
11/01 --.-- c
11/02 21.7 c
11/03 22.5 c
在这里我想找到字符串的位置"--.--"
然后点击它,这样我就可以更新列表了。有没有办法找到字符串的位置?我知道这solo.searchText()
会告诉字符串是否存在,但是位置呢?
// i think it will help you
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
// TODO Auto-generated method stub
if(yourliststring.trim().equals("--.--"))
{
//your condition
}
else
{
//your condition
}
}
});
我不确定您需要什么位置,但是如果您需要屏幕上的位置,您可以简单地执行以下操作:
TextView textView = solo.getText("--.--"); // or solo.getText(Pattern.quote("--.--")); if needed
int[] xy = new int[2];
textView.getLocationOnScreen(xy);
final int viewWidth = textView.getWidth();
final int viewHeight = textView.getHeight();
final float x = xy[0] + (viewWidth / 2.0f);
final float y = xy[1] + (viewHeight / 2.0f);
这样你就有了中心点(x,y)。
如果您需要列表中的文本位置,您可以执行以下操作:
private int getPosition(ListView listView, String text) {
for (int i = 0; i < listView.getAdapter().getCount(); i++) {
Object o = listView.getAdapter.getItemAtPosition(i);
if (o instanceof TextView) {
if (((TextView)o).getText().toString().equals(text)) {
return i;
}
}
}
return -1; // not found
}
例如,您可以这样调用它(设置适当的参数):
int position = getPosition((ListView) solo.getView(ListView.class, 0), "--.--");
所有的东西都没有测试甚至编译,但是主要思想应该没问题。
我有一个简单的方法来查找并单击字符串
if(solo.searchText("--.--")){
solo.clickLongOnText("--.--");
}
我只需要单击字符串“--.--”。