Android ListView onClick在emulator中工作,但在触摸电话上不工作

Android ListView onClick在emulator中工作,但在触摸电话上不工作,android,Android,有人能告诉我为什么这在我的LG400f触摸电话上不起作用,但在模拟器中点击鼠标就可以了 代码 ListView listView = (ListView) findViewById(R.id.listContactsList); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_contacts, R.id.listContactsView, values); list

有人能告诉我为什么这在我的LG400f触摸电话上不起作用,但在模拟器中点击鼠标就可以了

代码

ListView listView = (ListView) findViewById(R.id.listContactsList);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_contacts,  R.id.listContactsView, values);
listView.setAdapter(adapter);
listView.setClickable(true);
listView.setFocusable(true);
listView.setFocusableInTouchMode(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Object selection = (Object) parent.getItemAtPosition(position);
    Toast.makeText(getApplicationContext(), selection.toString(), Toast.LENGTH_LONG).show();
    // Toast is triggered with mouse click in emulator but not touch in phone
ListView ListView=(ListView)findViewById(R.id.listContactsList);
ArrayAdapter=新的ArrayAdapter(此,R.layout.list_contacts,R.id.listContacts视图,值);
setAdapter(适配器);
listView.setClickable(真);
setFocusable(true);
setFocusableInTouchMode(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
对象选择=(对象)父对象。getItemAtPosition(位置);
Toast.makeText(getApplicationContext(),selection.toString(),Toast.LENGTH\u LONG.show();
//Toast在emulator中通过鼠标单击触发,但在手机中不触摸
XML

<ListView
    android:id="@+id/listContactsList"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    tools:context=".ListContacts" />

感谢回答此问题的人员

我并没有直接重新解决这个问题,而是编写了一个变体

首先,我以前的类是这样定义的:ListContacts扩展了Activity,代码与我在原始问题中显示的一样

我现在已经定义了我的类ListContacts扩展了ListActivity,并更改了代码(其工作原理如下):

首先从onCreate()中删除setContentView(R.layout.xxxx)和XML文件中的textview

代码:

this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values));
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Object selection = (Object) parent.getItemAtPosition(position);
        Toast.makeText(getApplicationContext(), selection.toString(), Toast.LENGTH_LONG).show();
this.setListAdapter(新的ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,values));
ListView ListView=getListView();
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
对象选择=(对象)父对象。getItemAtPosition(位置);
Toast.makeText(getApplicationContext(),selection.toString(),Toast.LENGTH\u LONG.show();

在xml中的Listview上检查touchscreenBlocksFocus=true

尝试将行Listview.setOnItemClickListener(新AdapterView.OnItemClickListener()更改为“Listview.setOnItemClickListener(新OnItemClickListener(){}”因此,在设备上,
selection
null
onItemClick
未运行?无法获取此listView。setOnItemClickListener(新的OnItemClickListener(){}为了使用JadeSam,我修改了代码以显示Toast以简化,Toast不显示在Touch上。您是否尝试过使用onItemClickListener而不是OnItemClicks?我从未使用过
touchscreenBlocksFocus
。在任何标准情况下,都必须有一个更简单的解决方案。另外,请关注最近未被接受的问题回答5年以上。谢谢!