ListView不会对点击做出反应

时间:2015-05-28 16:33:52

标签: java android

我是一个初学者Android开发者,我需要一些帮助: 我的项目中有一个片段 - TasksFragment,上面有一个ListView元素。在ListView上,使用ArrayAdapter项由Item的自定义布局形成,然后添加到ListView。问题是,ListView不会对点击处理事件做出反应。

以下是代码片段:

TaskAdapter类......

  public class TaskAdapter extends ArrayAdapter<Task> {
    public TaskAdapter(ArrayList<Task> tasks) {
        super(getActivity(), 0, tasks);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = getActivity().getLayoutInflater().inflate(R.layout.list_item_task, null);
        }

        Task task = getItem(position);

        TextView titleTextView = (TextView) convertView.findViewById(R.id.task_list_item_titleTextView);
        titleTextView.setText(task.getTitle());
        CheckBox solvedCheckBox = (CheckBox) convertView.findViewById(R.id.task_list_item_solvedCheckBox);
        solvedCheckBox.setChecked(task.isSolved());

        return convertView;
    }

}

ItemClick片段。

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.tasks_fragment, null);
    mTasks = TaskLab.get(getActivity()).getTasks();
    final ListView lvMain = (ListView) view.findViewById(R.id.listViewTasks);
    lvMain.setClickable(true);
    TaskAdapter adapter = new TaskAdapter(mTasks);
    setHasOptionsMenu(true);

    lvMain.setAdapter(adapter);

    lvMain.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Task task = (Task)lvMain.getItemAtPosition(position);
            Toast.makeText(getActivity().getApplicationContext(), task.getTitle() + " was clicked", Toast.LENGTH_LONG).show();
            Intent i = new Intent(getActivity(), AddTaskActivity.class);
            startActivity(i);

        }
    });

    return view;
}

List_Item_Task的XML布局

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

    <CheckBox
        android:id="@+id/task_list_item_solvedCheckBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_alignParentRight="true"
        android:enabled="false"
        android:padding="4dp"/>

    <TextView
        android:id="@+id/task_list_item_titleTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/task_list_item_solvedCheckBox"
        android:textStyle="bold"
        android:paddingLeft="4dp"
        android:paddingRight="4dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:textSize="22dp"/>

</RelativeLayout>

tasks_fragment.xml的Xml布局

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textViewTasksFragmentHeader"
        android:text="Задачи"
        android:textSize="30dp"
        android:layout_gravity="center_horizontal"
        android:layout_centerHorizontal="true"/>

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

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

是的,您的列表视图无法点击。

只需在复选框布局中添加

即可
        android:focusable="false"

您的商品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" >

<CheckBox
    android:id="@+id/task_list_item_solvedCheckBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"   //Add this
    android:layout_alignParentRight="true"
    android:gravity="center"
    android:padding="4dp" />

<TextView
    android:id="@+id/task_list_item_titleTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/task_list_item_solvedCheckBox"
    android:paddingBottom="5dp"
    android:paddingLeft="4dp"
    android:paddingRight="4dp"
    android:paddingTop="5dp"
    android:textSize="22dp"
    android:textStyle="bold" />

现在它应该工作了。我测试了它:))