listview onItem在BaseAdapter时没有被调用

时间:2014-03-15 19:49:57

标签: android android-listview

我试图找出问题已经过了一个小时。我实现自己的适配器,列表视图的onClick事件没有被调用

自定义布局xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<CheckBox
    android:id="@+id/check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="4px"
    android:layout_marginRight="10px" >
</CheckBox>


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="23dp"
    android:layout_marginTop="10dp"
    android:layout_toRightOf="@+id/imageView1"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="CodeLearn Chapter 1"
    android:textSize="16sp" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView1"
    android:layout_alignLeft="@+id/textView1"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:text="Description" />

  </RelativeLayout>

主要布局xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/tvUserName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="false"
  />


<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

    </LinearLayout>

自定义适配器代码

public class AssignmentAdapter extends BaseAdapter
{

public View getView(int rowNumber, View convertView, ViewGroup parent)
    {
        View view = null;
        ViewHolder viewHolder;
        final int row = rowNumber;
        if (convertView == null)
        {
            LayoutInflater minflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            // convertView = minflater.inflate(R.layout.listitem, parent,
            // false);
            view = minflater.inflate(R.layout.listitem, null);

            viewHolder = new ViewHolder();

            viewHolder.courseTitle = (TextView) view.findViewById(R.id.textView1);
            viewHolder.assignmentTitle = (TextView) view.findViewById(R.id.textView2);
            viewHolder.chkBox = (CheckBox) view.findViewById(R.id.check);

            // chapterDesc.setText(myAssign.assignmentTitle);

            viewHolder.chkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
            {

                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
                {
                    // Model element = (Model) viewHolder.checkbox
                    // .getTag();
                    // element.setSelected(buttonView.isChecked());
                    if (isChecked)
                    {
                        Log.d(tag, "i got checked"+ row);
                    }

                }
            });

            view.setTag(viewHolder);
        } else
        {
            view = convertView;
            viewHolder = (ViewHolder) convertView.getTag();
        }

        ViewHolder holder = (ViewHolder) view.getTag();

        Assignment myAssign = listAssignment.get(rowNumber);
        holder.courseTitle.setText(myAssign.courseTitle);
        holder.assignmentTitle.setText(myAssign.assignmentTitle);

        return view;
    }

MainActivity

public class MainActivity extends Activity
{

    AssignmentAdapter   assignmentAdaper;
    Context             context = MainActivity.this;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.home_page);
    assignmentAdaper = new AssignmentAdapter(this);

        ListView assignmentLists = (ListView) findViewById(R.id.listView1);
        assignmentLists.setAdapter(assignmentAdaper);

        Assignment myAssignment = new Assignment();

        assignmentLists.setOnItemClickListener(new OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
            {
                Log.d("MainActivity", "wewew");

            }
    });

1 个答案:

答案 0 :(得分:0)

因为,我在listview布局中有复选框。我需要禁用复选框的焦点属性

   <CheckBox
    android:id="@+id/check"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="4px"
    android:layout_marginRight="10px"
    android:focusable="false"
    android:focusableInTouchMode="false" >
</CheckBox>