Android如何在OnClickListener代码中更改OnItemClickListener代码

时间:2013-10-29 12:30:02

标签: android onclicklistener listadapter onitemclicklistener

我在SherlockActivity更改了我的初始活动,以便从ABS的所有优势中受益。为此,我使用ListAdapterAnSco extends BaseAdapter。 现在,我想在onclick的{​​{1}}中管理onLongClickgetView。 我使用了几种组合,但我不能这样做。

注意:我使用ListAdapter来获取商品

原始OnItemClickListener代码


SQLiteCursor

如何在OnClick方法中更改此代码以执行相同的工作?

我的getView


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

2 个答案:

答案 0 :(得分:0)

提取OnClickListener以分隔类并再次传递

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

在适配器中删除

   // 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());
}

答案 1 :(得分:0)

你可以使用:

        holder.an.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

          Intent intent = new Intent(contetx,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(context, "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();

        }
    });
必须将

和上下文传递给扩展BaseAdapter的类