I changed my initial Activity in SherlockActivity
in order to benefit from all the advantages of ABS. and for this I use a ListAdapterAnSco extends BaseAdapter
.
Now I want to manageonclick
and onLongClick
in getView
of my ListAdapter
.
I used several combinations but I can not do it.
NB: I use the SQLiteCursor
to get items
Original OnItemClickListener Code
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
Intent intent = new Intent(getApplicationContext(),ListPeriode.class);
SQLiteCursor cr=(SQLiteCursor)parent.getItemAtPosition(position);
String ansco=cr.getString(cr.getColumnIndex(DatabaseHelper.ANSCO));
AnSco an=new AnSco(ansco);
an.setIdan((int)id);
Toast.makeText(getApplicationContext(), "Année Scolaire: "+an.getAnsco(), Toast.LENGTH_LONG).show();
intent.putExtra("ANSCO_ID", an.getIdan());
intent.putExtra("ANSCO_AN", an.getAnsco());
cr.close();
startActivity(intent);
finish();
}
How to change this code in an OnClick methode to do the same work?
My getView
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.annee_sco_item, null);
// Locate the TextViews in listview_item.xml
holder.an = (TextView) view.findViewById(R.id.ansco_item);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// Set the results into TextViews
holder.an.setText(listAnsco.get(position).getAnsco());
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
}
});
return view;
}
Extract OnClickListener to seperate class and pass it again
MyClickListener.java
public class MyClickListener implements onItemClickListener
{
@override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Intent intent = new Intent(getApplicationContext(),ListPeriode.class);
SQLiteCursor cr=(SQLiteCursor)parent.getItemAtPosition(position);
String ansco=cr.getString(cr.getColumnIndex(DatabaseHelper.ANSCO));
AnSco an=new AnSco(ansco);
an.setIdan((int)id);
Toast.makeText(getApplicationContext(), "Année Scolaire:"+an.getAnsco(), Toast.LENGTH_LONG).show();
intent.putExtra("ANSCO_ID", an.getIdan());
intent.putExtra("ANSCO_AN", an.getAnsco());
cr.close();
startActivity(intent);
finish();
}
}
in your adapter remove the
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
}
});
YourActivity.java
@override
onCraete(Bundle x)
{
ListView listView = (ListView) findViewById(R.i.your_list_id);
listView.setAdapter(new YourAdapter());
listView.setOnItemClickListener(new MyClickListener());
}