0

谁能告诉我为什么这在我的 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" />
4

2 回答 2

1

在 xml 中的 Listview 检查 touchscreenBlocksFocus = true

于 2018-04-20T04:45:09.447 回答
0

感谢回答这个问题的人。

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

首先,我之前的课程是这样定义的:ListContacts extends Activity并且代码就像我在原始问题中显示的那样。

我现在已经定义了我的类ListContacts 扩展 ListActivity并更改了代码(有效),如下所示:

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

代码:

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();
于 2012-11-19T06:48:32.173 回答