自定义列表视图项的setOnClickListener在android 1.5上不起作用

时间:2013-09-02 08:12:11

标签: android listview android-listview

我知道有很多类似的问题,但我没有找到适合我的解决方案。我有一个类似于这个的listview布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/layout_main"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center_vertical"
            android:singleLine="true" />
    </LinearLayout>

</RelativeLayout>

在我的listview适配器中,我有下一个getView方法:

@Override
        public View getView(int arg0, View convertView, ViewGroup arg2) {

            if (convertView == null) {

                mHolder = new Holder();
                convertView = mInflater.inflate(R.layout.item_list_1, null);
                mHolder.firstLayout = (LinearLayout) convertView.findViewById(R.id.layout_main);
                mHolder.text1 = (TextView) convertView.findViewById(R.id.text1);

                convertView.setTag(mHolder);
            }

            mHolder = (Holder) convertView.getTag();
            mHolder.text1.setText("text");


            mHolder.firstLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    android.util.Log.e("TAG", "mHolder.firstLayout   onClick");
                }
            });

            convertView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    android.util.Log.e("TAG", "convertView  onClick");
                }
            });

            return convertView;
        }

mHolder.firstLayout.setOnClickListenerconvertView.setOnClickListener不起作用,但是:

mListView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        android.util.Log.e("TAG", "mListView  onClick");

    }
});

它有效,但我需要完全监听我的listview项目。

我知道问题是焦点,因为在getView中使用requestFocus()侦听器工作,但这不是一个好的解决方案。

It works good for 2.3 but doesn't work for 1.5, I need to get it working exactly for 1.5

1 个答案:

答案 0 :(得分:0)

没有理由为getView()中的每个项目设置侦听器。

可能会产生更多问题。保持简单并设置Listener just for the ListView in your onCreate()

更改您的getView()

    @Override
    public View getView(int arg0, View convertView, ViewGroup arg2) {

        if (convertView == null) {

            mHolder = new Holder();
            convertView = mInflater.inflate(R.layout.item_list_1, null);
            mHolder.firstLayout = (LinearLayout) convertView.findViewById(R.id.layout_main);
            mHolder.text1 = (TextView) convertView.findViewById(R.id.text1);

            convertView.setTag(mHolder);
        }

        mHolder = (Holder) convertView.getTag();
        mHolder.text1.setText("text");


        return convertView;
    }

这可以解决您的问题。