2

我正在尝试使用 BaseAdapter 创建一个 ListFragment。但是当我使用自定义适配器时,我的 onItemClick 事件不起作用。我确实得到了我想要的视图,但我的项目点击没有使用 CustomAdapter 触发。

我正在使用以下代码

  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    //following code do not fire on click event
        setListAdapter(new TestListAdapter(getActivity(), test)); //test is a Arraylist

//following code perfectly fine
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, new String[] { "One", "Two", "Three"}));

}

这是我的 TestListAdapter

class TestListAdapter extends BaseAdapter {
    private LayoutInflater inflater=null;
    private ArrayList<Xyz> tests;
    private Context mContext;
    TestListAdapter(Context context, ArrayList<Xyz> tests){
        //super(context, tests);
         mContext=context;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.tests=tests;
    }

    public int getCount() {
        // TODO Auto-generated method stub
        return tests.size();

    }

    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return tests.get(position);
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View view=convertView;
        if(convertView==null)
            view = inflater.inflate(R.layout.my_list_row, null);
        TextView tvName = (TextView)view.findViewById(R.id.testName); // title

        return view;
    }


}

我已经覆盖了以下函数,这就是我知道它与 ArrayAdapter 一起工作的方式。

public void onListItemClick(ListView l, View v, int position, long id) {
    Log.d("XYZ","click.......");

}
4

1 回答 1

1

您的列表视图有一个 TextView。所以 onListItemClick() 不会触发。

将 TextView(或其他列表视图子项)的可聚焦、可点击属性设置为 false。

于 2012-12-17T18:16:16.813 回答