繁体   English   中英

Android列表视图项在适配器中单击

[英]Android list view item click in adapter

我有一个Fragment类和相应的适配器类。 我的Fragment类看起来像这样-

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        myAdapter = new MyAdapter(getActivity(), favourites);
        msgListView.setAdapter(myAdapter );
        return view;
    }

在MyAdapter中

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder1 viewHolder;
        MyClass favouriteMessage =  favouriteMessageList.get(position);

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.favorites_fragment_list, null);
            viewHolder = new ViewHolder1();
            viewHolder.favouriteMessagesList = (TextView)convertView.findViewById(R.id.favourites_list);
            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder1) convertView.getTag();
        }
        //Update Your Views Here
        viewHolder.favouriteMessagesList.setText(favouriteMessage.getText());

        return convertView;
    }

    public void setFavouritesData(ArrayList<FavouriteMessageWrapper> data) {
        favouriteMessageList = data;
        notifyDataSetChanged();
    }

我想在点击监听器上实现列表视图项。 我在哪里实施? 如果我尝试在片段的onCreateView中执行此操作,则它为null。

这样尝试

在片段中设置itemClickListener并这样做,

msgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                                @Override
                                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                    MyClass favouriteMessage = favourites.get(position);
                                   String favorite_message = favouriteMessage.STRING_NAME;
                                }
                            });

不要在创建时设置adpter。 在获取数据后的setadapter.like http方法在onpost方法中设置适配器。

使您的片段实现OnItemSelectedListener以及之后

msgListView.setAdapter(myAdapter ); 在您的onCreateView()

msgListView.setOnItemSelectedListener(this)

onCreateView()所有初始化:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragementName, container, false);//put fragment name of your 
    msgListView=(ListView)view.findViewById(R.id.listView);
    return view;
}

在您的片段以及onActivityCreated()安装适配器和itemClickListener实现OnItemClickListener

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    myAdapter = new MyAdapter(getActivity(), favourites);
    msgListView.setAdapter(myAdapter );
    msgListView.setOnItemClickListener(this);
}

您可以改为在适配器内部实现onClickListener

public View getView(int position, View convertView, ViewGroup parent) {

     viewHolder.favouriteMessagesList.setOnClickListener(new OnClickListener() {  
        public void onClick(View v)
            {
                //perform action
            }
         });

    return convertView;
}

希望它能解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM