我在Android应用程序的UI上显示以下列表,该列表显示该日期的日期和温度。
temp degree
11/01 --.-- c
11/02 21.7 c
11/03 22.5 c
在这里,我想找到字符串"--.--"
的位置,然后单击它,以便我可以更新列表。有没有办法找到字符串的位置?我知道solo.searchText()
会判断字符串是否存在,但是该位置是什么?
答案 0 :(得分:1)
// 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
}
}
});
答案 1 :(得分:0)
我不确定你需要什么位置,但是如果你需要屏幕上的位置,你可以这么做:
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), "--.--");
所有内容都是在没有测试甚至编译的情况下编写的,但主要想法应该没问题。
答案 2 :(得分:0)
我有一个简单的方法来查找并点击字符串
if(solo.searchText("--.--")){
solo.clickLongOnText("--.--");
}
我只需点击字符串“--.--”。