2016-07-05 50 views
0

我得到一個NullPointerException當我運行我的應用程序:我不斷收到一個NullPointerException ListView中

logcat的

顯示java.lang.NullPointerException:試圖調用虛擬方法android.view.View android.view.View.findViewById上在org.example.km.json3.Helper.SwipeListAdapter.getView(SwipeListAdapter.java:52)空對象引用(int)的」

類在下面給出:

public class SwipeListAdapter extends BaseAdapter { 

    private Activity activity; 
    private LayoutInflater layoutInflater; 
    private List<StockDetails> listStockDetails; 


    public SwipeListAdapter(Activity activity, List<StockDetails> listStockDetails) { 
     this.activity = activity; 
     this.listStockDetails = listStockDetails; 

    } 

    @Override 
    public int getCount(){ 
     return listStockDetails.size(); 
    } 
    @Override 
    public Object getItem(int position) { 
     return listStockDetails.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

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

     if(layoutInflater == null) { 
      layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 

     if(convertView == null){ 
      layoutInflater.inflate(R.layout.list_row, null); 
     } 
//This is the line number : 52 

      TextView txtStockId = (TextView) convertView.findViewById(R.id.txtStockId); 
      TextView txtStockTag = (TextView) convertView.findViewById(R.id.txtStockTag); 
      TextView txtStockExchange = (TextView) convertView.findViewById(R.id.txtStockExchange); 
      TextView txtStockRate = (TextView) convertView.findViewById(R.id.txtStockRate); 
      TextView txtStockChange = (TextView) convertView.findViewById(R.id.txtStockChange); 
      TextView txtStockChangePercent = (TextView) convertView.findViewById(R.id.txtStockChangePercent); 
      TextView txtStockPreviousClosing = (TextView) convertView.findViewById(R.id.txtStockPreviousClosing); 

      txtStockId.setText(listStockDetails.get(position).id); 
      txtStockTag.setText(listStockDetails.get(position).t); 
      txtStockExchange.setText(listStockDetails.get(position).e); 
      txtStockRate.setText(listStockDetails.get(position).l); 
      txtStockChange.setText(listStockDetails.get(position).c); 
      txtStockChangePercent.setText(listStockDetails.get(position).cp); 
      txtStockPreviousClosing.setText(listStockDetails.get(position).pcls_fix); 

     return convertView; 
    } 
} 

回答

1

變化

if(convertView == null){ 
    layoutInflater.inflate(R.layout.list_row, null); 
} 

if(convertView == null){ 
    convertView = layoutInflater.inflate(R.layout.list_row, null); 
} 

由於Views在第一時間getView()被稱爲創建(沒有View被重用,還),你convertView爲null 。

您正在充分擴大這種情況下的佈局......但是,您不保存退回的View。這樣一來,convertView保持爲空和convertView.findViewById()產生一個空指針異常

+0

泰,它的工作初始化。謝謝 –

+0

我很高興能幫助你! – W0rmH0le

1

你從來沒有什麼應該與充氣初始化:

if(convertView == null){ 
    convertView = layoutInflater.inflate(R.layout.list_row, null); 
} 

這意味着convertView從未與佈局

相關問題