当我尝试使用ListView 的performItemClick函数时,我遇到了一些困难.
我想要做的就是在列表的第一项中以编程方式执行单击.
我怎样才能做到这一点?我在文档中查找了该函数,但我并没有真正理解它的参数.
我尝试过类似的东西:
myListView.performItemClick(myListView.getChildAt(0), 0, myListView.getChildAt(0).getId());
Run Code Online (Sandbox Code Playgroud)
但它没有用 (myListView.getChildAt(0) returns null)
先感谢您!
Aru*_*ose 63
mList.performItemClick(
mList.getAdapter().getView(mActivePosition, null, null),
mActivePosition,
mList.getAdapter().getItemId(mActivePosition));
Run Code Online (Sandbox Code Playgroud)
mActivePosition是您的点击位置!祝一切顺利!:)
Ste*_*ven 27
这对我有用.
listView.performItemClick(
listView.getAdapter().getView(position, null, null), position, position);
Run Code Online (Sandbox Code Playgroud)
使用适配器获取项目位置的视图.我不想要的其他2个参数,所以我把它们留空了.保留convertView null会导致适配器呈现新视图.这是一个性能问题,但由于这只是偶尔发生一次,因此不会产生太大影响.我不需要为任何东西指定父级,因为我没有使用它.
位置只是您的项目所在的位置.另外,在performItemClick之前的这两行代码会产生选择列表项的错觉.他们还确保屏幕上显示相应的项目.
listView.requestFocusFromTouch();
listView.setSelection(position);
Run Code Online (Sandbox Code Playgroud)
sul*_*lai 14
这对我来说效果最好.在主线程上运行它.
new Handler().post(new Runnable() {
@Override
public void run() {
mList.performItemClick(
mList.getChildAt(mActivePosition),
mActivePosition,
mList.getAdapter().getItemId(mActivePosition));
}
});
Run Code Online (Sandbox Code Playgroud)
这类似于Arun Jose的回答,但它会将消息排队到主线程以给出ListView
一些时间来启动.
我尝试了下面的代码,它的工作原理.
getListView().performItemClick(null, 0, getListAdapter().getItemId(0));
Run Code Online (Sandbox Code Playgroud)
第一个参数(视图)可以为null.
小智 -5
这是来自《开始 Android 游戏》。它创建一个简单的项目列表,您可以单击该列表来打开新活动。当然,每个列表项还必须作为具有 .ListItem# 名称的单独活动添加到 AndroidManifest.xml 中。
public class MainActivity extends ListActivity {
String tests[] = { "ListItem1",
"ListItem2",
"ListItem3",
"ListItem4"};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, tests));
}
@Override
protected void onListItemClick(ListView list, View view, int position, long id) {
super.onListItemClick(list, view, position, id);
String testName = tests[position];
try {
Class<?> classInstance = Class.forName("your.package.name." + testName);
Intent intent = new Intent(this, classInstance);
startActivity(intent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
}
归档时间: |
|
查看次数: |
39454 次 |
最近记录: |