2012-12-17 52 views
2

我想用BaseAdapter创建一个ListFragment。但我的onItemClick事件不起作用,当我使用自定义适配器。我确实得到了我想要的视图,但是我的物品点击并未使用CustomAdapter触发。Android ListFragment onclick问题

我使用下面的代码

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......."); 

} 
+1

你在'R.layout.my_list_row'中有什么看法? – Luksprog

+0

其自定义布局包含多个视图TextView,ImageView,CheckBox – minhaz

+2

“CheckBox”或其他小部件(如“ImageButtons”,“Buttons”)应该不可聚焦。 – Luksprog

回答

1

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

将TextView(或其他listview子项)的可点击的可点击属性设置为false。