2016-04-20 50 views
0

即時通訊有每個列表視圖的項目按鈕。當按鈕被點擊時,它必須獲取相應的listview項目的值。單擊列表視圖的按鈕不會獲​​取該列表視圖項目的相應textview值

以下是我的getView方法。

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     view = convertView; 

     if (convertView == null) { 
      //inflate the view for each row of listview 
      if (imageLoader == null) 
       imageLoader = AppController.getInstance().getImageLoader(); 
      view = inflator.inflate(R.layout.pending_orders_fragment, null); 
      vholder = new ViewHolder(); 
      vholder.mShippngRefNo = (TextView) view.findViewById(R.id.shipment_ref_no_value); 
      vholder.contact = (ImageButton) view.findViewById(R.id.imageButton); 
      vholder.mShippingStatus.setTag(position); 

      view.setTag(vholder); 
     } else 
      vholder = (ViewHolder) view.getTag(); 

     PendingOrdersDao item = listforview.get(position); 


     vholder.mShippngRefNo.setText(item.getSipmentNo()); 
     vholder.contact.setOnClickListener(this.onClickListener); 

     return view; 
    } 

    public void setOnButtonClickListener(final View.OnClickListener onClickListener) { 
     this.onClickListener = onClickListener; 
    } 

林調用按鈕,在我的代碼如下..

adapter.setOnButtonClickListener(new View.OnClickListener() { 
             @Override 
             public void onClick(View v) { 
              LinearLayout relativeLayout = (LinearLayout) v.getParent(); 
              TextView textView = (TextView) relativeLayout.findViewById(R.id.shipment_ref_no_value); 
              Toast.makeText(getActivity(),textView.getText().toString(),Toast.LENGTH_SHORT).show(); 

             } 
            }); 

但是我得到空指針異常,而這樣做so.How我可以排序了這一點?

以下是我的logcat

顯示java.lang.NullPointerException 在com.vaighai.fragments.MyOrdersFragment $ 2 $ 1.onClick(MyOrdersFragment.java:253) 在android.view.View.performClick(查看的.java:4475) 在android.view.View $ PerformClick.run(View.java:18786) 在android.os.Handler.handleCallback(Handler.java:730) 在android.os.Handler.dispatchMessage(處理程序.java:92) at android.os.Looper.loop(Looper.java:176)

修訂的logcat:

致命異常:在

主要 顯示java.lang.NullPointerException

com.vaighai.adapters.CustomAdapter $ 1.onClick(CustomAdapter.java:122) 在android.view.View.performClick(View.java:4475) at android.view.View $ PerformClick.run(View.java:18786) at android.os.Handler.handleCallback(Handler.java:73 0) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5419) (Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit的.java:1046) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在dalvik.system.NativeStart.main(本機方法)

+0

張貼您的logcat – sasikumar

+0

我已經發布了logcat – user1241241

+0

@ user1241241我們可以使用構造函數獲得Adapter類的完整代碼。可能是這個'setOnClickListener(this.onClickListener);'創建問題。 –

回答

1

最有可能你在活動

class MainAct extends Activity implements AdapterView.OnItemClickListener 
2

您可以直接設置setOnClickListener忘記這一點。所以從你的代碼中刪除

vholder.contact.setOnClickListener(this.onClickListener); 

添加以下代碼

vholder.contact.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     LinearLayout relativeLayout = (LinearLayout) v.getParent(); 
     TextView textView = (TextView) relativeLayout.findViewById(R.id.shipment_ref_no_value); 
     Toast.makeText(context,textView.getText().toString(),Toast.LENGTH_SHORT).show();} 
     }); 
+0

再次Im得到相同的NullPointerException – user1241241

+0

顯示您的完整logcat – sasikumar

+0

我已經發布了完整的logcat – user1241241

1

只是在你的吐司消息寫:

Toast.makeText(getActivity(),listforview.get((int)vholder.mShippingStatus.getTag()).getSipmentNo(),Toast.LENGTH_SHORT).show(); 

而且你如果和其他內部getView()方法寫的外:

vholder.mShippngRefNo.setTag(position); 
+0

我試過設置標籤。我應該在onClick上寫什麼? – user1241241

+0

仍然是相同的錯誤 – user1241241

+0

您是否在if和else之外編寫setTag()語句?因爲如果getview中的塊在convertview爲空時只設置標記,那麼在裏面設置標記。因此,對於所有時間設置標籤寫在你的if else塊以外: if(convertview == null){} else {} vholder.mShippngRefNo.setTag(position); –

相關問題