I have a Fragment class and corresponding adapter class. My Fragment class looks like this -
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
myAdapter = new MyAdapter(getActivity(), favourites);
msgListView.setAdapter(myAdapter );
return view;
}
In 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();
}
I want to implement list view item on click listener. Where do I implement it? If i try to do it in onCreateView of my fragment, it is null.
Try like this,
set itemClickListener in fragment and do like this,
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;
}
});
don't set adpter on create. setadapter after getting data.like http method set adapter in onpost method.
Make your fragment implement OnItemSelectedListener
and after
msgListView.setAdapter(myAdapter );
in your onCreateView()
msgListView.setOnItemSelectedListener(this)
.
Do all initialization in 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;
}
Implement OnItemClickListener
in your fragment and in onActivityCreated()
setup adapter and itemClickListener
:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
myAdapter = new MyAdapter(getActivity(), favourites);
msgListView.setAdapter(myAdapter );
msgListView.setOnItemClickListener(this);
}
you can implement onClickListener inside the adapter instead
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder.favouriteMessagesList.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
//perform action
}
});
return convertView;
}
hope it solved your problem
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.