2

ListView を持つアクティビティでこれを使用している場合、機能しませんでした。

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            ong arg3) {
    try {
        Intent intent = new Intent(UsersListActivity.this,
                UserActivity.class);
        startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

解決策を探した後getView()アダプターの

convertView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            ong arg3) {
    try {
        Intent intent = new Intent(mActivity,
                UserActivity.class);
        mActivity.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

これは機能します。しかし、なぜそのような奇妙な行動。なぜそれが本来の方法で機能しないのですか。

ありがとうございました

4

5 に答える 5

5

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

ここでは、の親クラスであるViewofを使用しています。それが機能していない理由です。代わりにofを使用する必要がありました。Adapter ViewCustom AdapterViewCustom Adapter

getView()Adpater Viewここでの関数は、親のビューをビューに変換するのに役立ちますCustom Adapter

したがって、2 つのオプションのいずれかを使用します。

usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {

また

usersList.setOnItemClickListener(new OnItemClickListener() {

どちらのオプションも機能する場合があります。

于 2012-12-24T11:11:14.103 に答える
2
于 2014-10-20T10:10:13.250 に答える
0

カスタム AdapterView がある場合は、その AdapterView を参照する必要があります。スーパークラスのアダプタービューを参照し、呼び出したときにsetAdapter()コードブロックがnew AdapterView.OnItemClickListener()実行されないと思います。

usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            ong arg3) {
    try {
        Intent intent = new Intent(UsersListActivity.this,
                UserActivity.class);
        startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});
于 2012-12-24T11:04:07.363 に答える