问题
here is my problem :
I created a custom adapter for my ListView and I get information out of a List that I give to that adapter in order to let him fulfill my ListView. He does everything correctly. Now I'd like to implement an OnItemClickListener and to get the data from it. But in that list I have 4 TextViews ...
How can I retrieve the data ?
I already know how to get the id and position since I display them in a Toast.
Thanks a lot for your help !
Here is the custom Adapter :
public class NextRdvAdapter extends ArrayAdapter<NextRdv> {
private List<NextRdv> listNextRdv = new ArrayList<NextRdv>();
private Context context;
public NextRdvAdapter(List<NextRdv> nextRdvList, Context ctx) {
super(ctx, R.layout.list_next_rdv, nextRdvList);
this.listNextRdv = nextRdvList;
this.context = ctx;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) { // This a new view we inflate the new layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_next_rdv, parent, false);
} // Now we can fill the layout with the right values
TextView tvTimeStart = (TextView) convertView.findViewById(R.id.next_time_start);
TextView tvTimeEnd = (TextView) convertView.findViewById(R.id.next_time_end);
TextView tvEnterprise = (TextView) convertView.findViewById(R.id.next_enterprise_name);
TextView tvAddress = (TextView) convertView.findViewById(R.id.next_address);
NextRdv rdv = listNextRdv.get(position);
tvTimeStart.setText(rdv.getStartTime());
tvTimeEnd.setText(rdv.getEndTime());
tvEnterprise.setText(rdv.getEnterprise());
tvAddress.setText(rdv.getAddress());
return convertView;
}
}
Here is my Fragment that posess the ListView :
public class HomeFragment extends Fragment implements OnItemClickListener{
float density;
//Everything you need about this rdv
private ListView lvThisRdv;
private List<NextRdv> listThisRdv = new ArrayList<NextRdv>();
private NextRdvAdapter ThisRdvAdapter;
private NextRdvListBouchon thisBouchon;
//Everything you need about next rdv
private ListView lvNextRdv;
private List<NextRdv> listNextRdv = new ArrayList<NextRdv>();
private NextRdvAdapter nextRdvAdapter;
private NextRdvListBouchon bouchon;
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
lvThisRdv = (ListView)rootView.findViewById(R.id.listView_this_RDV);
thisBouchon = new NextRdvListBouchon();
listThisRdv = thisBouchon.getBouchonInc();
ThisRdvAdapter = new NextRdvAdapter(listThisRdv, getActivity());
lvThisRdv.setAdapter(ThisRdvAdapter);
//Displaying the list of the next meetings
lvNextRdv = (ListView)rootView.findViewById(R.id.listView_next_RDV);
//Get test data
bouchon = new NextRdvListBouchon();
listNextRdv = bouchon.getBouchon();
nextRdvAdapter = new NextRdvAdapter(listNextRdv, getActivity());
lvNextRdv.setAdapter(nextRdvAdapter);
lvNextRdv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//
Toast toast = Toast.makeText(getActivity(), "Pos : " +position+ " / id : " + id, Toast.LENGTH_SHORT);
toast.show();
}
});
return rootView;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
}
}
回答1:
inside onItemClick
you can use the AdapterView
argument,
NextRdv item = (NextRdv) parent.getItemAtPosition(position)
回答2:
You can use below code
lvNextRdv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// selected item
String selected =((TextView)view.findViewById(R.id.your_textView_item_id)).getText().toString();
Toast toast=Toast.makeText(getApplicationContext(), selected, Toast.LENGTH_SHORT);
toast.show();
}
});
using this u can get the data of any TextView inside custom adapter for selected row.
Hope will help you...
来源:https://stackoverflow.com/questions/24034754/how-to-get-data-from-custom-adapter-in-listview