列表视图 onItemClick 不起作用

List View onItemClick is not working

我有一个自定义列表视图。列表视图的每一行都包含一个复选框、2 个文本视图和一个图像视图。单击列表视图的任何行时,我一直试图打开另一个 activity,但 onItemClick 根本不起作用。

public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
    private Toolbar toolbar;
    private ListView listView1;
    List<list_addr> rowitems;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.saved_address2);

        toolbar = (Toolbar) findViewById(R.id.tool_bar3);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayShowHomeEnabled(true);

        rowitems = new ArrayList<list_addr>();

        listView1 = (ListView) findViewById(R.id.addr_list);
        list_addr_adapter adapter = new list_addr_adapter(this,
                R.layout.items_sav_addr2, SavedAddress.rowitems);
        listView1.setAdapter(adapter);
        listView1.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(Main.this,Second.class);
        startActivity(intent);
    }

    //...
}

是否因为我在列表中有一个复选框?因为我对其他列表视图应用了相同的方法并且它们工作得很好。

尝试将您的复选框设置为不可聚焦,如下所示:

android:focusable="false"
android:focusableInTouchMode="false"

希望对您有所帮助。

在您的布局 xml 中,将此 属性 添加到根布局

android:descendantFocusability="blocksDescendants"

如果列表视图有按钮或排序,焦点在你的项目上,它是复选框 并将其添加到复选框

android:focusable="false"
android:focusableInTouchMode="false"

您传递了错误的 class 上下文。

Intent intent = new Intent(Main.this,Second.class);

startActivity(intent);

并且您的 class 是 SavedAddress2

改为

Intent intent = new Intent(SavedAddress2.this,Second.class);

startActivity(intent);

public class SavedAddress2 extends AppCompatActivity implements AdapterView.OnItemClickListener {
    private Toolbar toolbar;
    private ListView listView1;
    List<list_addr> rowitems;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.saved_address2);

        toolbar = (Toolbar) findViewById(R.id.tool_bar3);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayShowHomeEnabled(true);

        rowitems = new ArrayList<list_addr>();

        listView1 = (ListView) findViewById(R.id.addr_list);
        list_addr_adapter adapter = new list_addr_adapter(this,
                R.layout.items_sav_addr2, SavedAddress.rowitems);
        listView1.setAdapter(adapter);
        listView1.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(Main.this,Second.class);
        startActivity(intent);
    }

    //...
}

让我知道这是否适合您!:)