2017-10-07 78 views
-3

我已經嘗試設置在底座適配器點擊收聽我的列表視圖 這是從服務器,我有使用下面的代碼:如何SetOnClicklistener在Android基礎適配器的ListView中?

我在基地適配器getview:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
// TODO Auto-generated method stub 
     Holder holder = new Holder(); 
     View view; 
     view = inflater.inflate(R.layout.list_item_curr, null); 

     holder.tv_title = (TextView) view.findViewById(R.id.tv_title); 
     holder.tv_id = (TextView) view.findViewById(R.id.tv_id); 
     holder.relative = (RelativeLayout) view.findViewById(R.id.relative); 

     Nav_List current=data.get(position); 
     holder.tv_title.setTypeface(customfont); 
     holder.tv_title.setText(current.getTitle()); 
     holder.tv_id.setText(current.getDes()); 


     holder.relative.setOnClickListener(this); 
     holder.relative.setTag(position); 

     return view; 
    } 

} 

我上點擊:

@Override 
    public void onClick(View view) { 

     int pos = (Integer) view.getTag(); 
     Object object = getItem(pos); 
     Nav_List beanclass = (Nav_List) object; 

     switch (view.getId()){ 

      case R.id.relative: 

//    Toast.makeText(context, "Clicked :" + beanclass.getSku(), Toast.LENGTH_SHORT).show(); 
       Intent in = new Intent(context,Baby_Cat.class); 
       in.putExtra("Id",beanclass.getDes()); 
       context.startActivity(in); 

       break; 
     } 


    } 

但是在onclick()中有拋出錯誤。誤差小於

10-07 11:47:26.245 15371-15371/com.kamalaminfo.asm E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: com.kamalaminfo.asm, PID: 15371 
                    java.lang.ClassCastException: java.lang.Integer cannot be cast to com.kamalaminfo.asm.Getter_Setter.Nav_List 
                     at com.kamalaminfo.asm.Adapter.DrawerListAdapter.onClick(DrawerListAdapter.java:80) 
                     at android.view.View.performClick(View.java:5233) 
                     at android.view.View$PerformClick.run(View.java:21211) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5539) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

請幫我找到了問題

注:此相同的編碼在另一個列表視圖這就是易混淆上午做工精細

+0

使用data.get(pos)而不是getItem(pos) –

+0

Object object = getItem(pos);正在混亂。直接從你的列表中獲取項目,比如beanclass = data.get(pos) –

+0

謝謝你的工作精細..... – udhaya

回答

0

它不喜歡一個整數的鑄造。 它可能是你的對象實際上不是你所投的類。我認爲它可能是錯誤中所說的整數。也許你得到錯誤的項目?

嘗試是否可以在對象上使用getClass並打印它的內容。然後你會看到它是哪一類。

我個人會在onClickListener中使用onClickListener()而不是onClickListener中的「this」,並在那裏點擊之後實現方法和程序。如果這對你是可能的。像

holder.relative.setOnClickListener(new onClickListener(){ 

    //methods onClick to be implemented 
}