2013-10-29 39 views
0

为了受益于ABS的所有优点,我在SherlockActivity中更改了我的初始活动。为此我使用ListAdapterAnSco extends BaseAdapter。 现在我想管理我的ListAdapter中的onclickonLongClickgetView。 我使用了几种组合,但我无法做到。Android如何更改OnClickListener代码中的OnItemClickListener代码

注:我用的是SQLiteCursor获得项目

原始OnItemClickListener代码


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

如何在一个onclick梅索德做同样的工作,改变这种代码?

我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; 
    } 
+0

没有你的onClickListener工作完美的课吗? –

+0

将SQLiteCursor cr传递给您的适配器构造函数。 – sss

+0

你的onItemClick()在哪里? –

回答

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

我没有作品 – jeff7

+0

不能覆盖onItemClick在onClickListener – jeff7

+0

我将修改我的全部答案,并开始清理 –

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

+0

这条线有错误: 'SQLiteCursor cr =(SQLiteCursor)parent.getItemAtPosition(position);' – jeff7