ListView onClick在模拟器中工作,但在触摸手机上不起作用

时间:2012-11-19 01:32:33

标签: android

任何人都可以告诉我为什么这对我的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

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" />

2 个答案:

答案 0 :(得分:1)

在xml的Listview中检查touchscreenBlocksFocus = true

答案 1 :(得分:0)

感谢回答此问题的人们。

我没有直接重新解决这个问题,但编写了一个有效的变体。

首先我的上一课定义如下: ListContacts扩展活动,代码就像我在原始问题中显示的一样。

我现在已经定义了我的类 ListContacts extends 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();