自定义列表视图setOnItemClickListener无法正常工作。

时间:2014-05-29 11:09:46

标签: android android-listview custom-lists

我有一个自定义列表视图,想要在listview行上执行click事件,并希望让用户定义类对象来执行下一个操作。以下是我试过的代码

ListView tInfoListView = (ListView)findViewById(R.id.tableInfoList);
tInfoListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                System.out.println("Inside");
                 Toast.makeText(this, "Clicked Now", Toast.LENGTH_SHORT).show();
            }
        });

我也尝试过这样的

tInfoListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                System.out.println("Inside");
                Object o = parent.getItemAtPosition(position);
                System.out.println("*********"+o);
            }
        });

但没有任何效果。此外,我还将以下属性设置为listview行上使用的textviews。

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

但仍然没有奏效。请指导我,我在哪里做错了。

3 个答案:

答案 0 :(得分:0)

您可以尝试在初始化时设置这些侦听器,因为每次用户单击列表行时,您似乎都在初始化视图.....

答案 1 :(得分:0)

在您使用的自定义适配器中,在getView()方法中,将OnClickListener设置为您在getView()方法中返回的convertView,如下所示。

@Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {

        if (convertView == null) {

            convertView = inflater.inflate(R.layout.grid_item, null);

        }

        convertView.setOnClickListener(onClickListener);
        return convertView;
    }

答案 2 :(得分:0)

您可能在行布局中具有可聚焦视图,例如,按钮。

在行布局中使用android:descendantFocusability