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() {

这里你使用View了 of Adapter View,它是你的父类Custom Adapter。这就是为什么它不起作用。相反,您应该使用Viewof Custom Adapter

getView()这里的函数可以帮助您将父视图转换为Adpater View视图Custom Adapter

所以你使用这两个选项中的任何一个,

usersList.setOnItemClickListener(new CustomAdapterView.OnItemClickListener() {

或者

usersList.setOnItemClickListener(new OnItemClickListener() {

这两个选项都可能有效。

于 2012-12-24T11:11:14.103 回答
2
于 2014-10-20T10:10:13.250 回答
1

它会起作用的

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) {
   // TODO Auto-generated method stub

     try {
       Intent intent = new Intent(mActivity, UserActivity.class);
       mActivity.startActivity(intent);
       } catch (Exception e) {
         e.printStackTrace();
      }
   }
});
于 2012-12-24T11:04:49.883 回答
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 回答
-1

尝试在 Activity 类中使​​用此行。

usersList.setOnItemClickListener(new OnItemClickListener() {

此行仅在 Activity 类中使​​用适配器,这是行不通的。我想不确定

usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {    
于 2012-12-24T11:05:08.847 回答