Android的ListFragment的onclick问题 [英] Android ListFragment onclick issue

查看:304
本文介绍了Android的ListFragment的onclick问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个使用BaseAdapter一个ListFragment。但是当我使用自定义适配器我onItemClick事件不工作。我得到我想要的看法,但我的项目点击也不会与CustomAdapter射击。

我使用以下code

 公共无效onActivityCreated(捆绑savedInstanceState){
    super.onActivityCreated(savedInstanceState);    //下面的code不火的单击事件
        setListAdapter(新TestListAdapter(getActivity(),测试)); //测试是一个ArrayList的//下面的code完全正常
setListAdapter(新ArrayAdapter<串GT;(getActivity(),android.R.layout.simple_list_item_1,新的String [] {一,二,三}));}

这是我TestListAdapter

 类TestListAdapter延伸BaseAdapter {
    私人LayoutInflater吹气= NULL;
    私人的ArrayList<&XYZ GT;试验;
    私人语境mContext;
    TestListAdapter(上下文的背景下,ArrayList的<&XYZ GT;测试){
        //超(背景下,测试);
         mContext =背景;
        吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.tests =测试;
    }    公众诠释的getCount(){
        // TODO自动生成方法存根
        返回tests.size();    }    公共对象的getItem(INT位置){
        // TODO自动生成方法存根
        返回tests.get(位置);
    }    众长getItemId(INT位置){
        // TODO自动生成方法存根
        返回的位置;
    }    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        // TODO自动生成方法存根
        查看查看= convertView;
        如果(convertView == NULL)
            鉴于= inflater.inflate(R.layout.my_list_row,NULL);
        TextView的tvName =(TextView中)view.findViewById(R.id.testName); //称号        返回视图。
    }
}

我已经覆盖下面的函数,这就是我怎么知道它ArrayAdapter工作。

 公共无效onListItemClick(ListView中升,视图V,INT位置,长的id){
    Log.d(XYZ,点击.......);}


解决方案

您列表视图中有一个TextView。所以onListItemClick()不火。

设置可聚焦,TextView的(或者其他列表视图子女)假的。可点击属性。

I am trying to create a ListFragment using BaseAdapter. But my onItemClick event is not working when i use custom Adapter. i do get my desired view but my on Item click is not firing with CustomAdapter.

I am using following code

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

}

and this is my 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;
    }


}

i have overridden following function and that is how i know it working with ArrayAdapter.

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

}

解决方案

Your list view has a TextView. So onListItemClick() does not fire.

Set focusable, clickable property of TextView (or other listview children) false.

这篇关于Android的ListFragment的onclick问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆