2016-07-05 4 views
0

Ich bin ein Nullpointer bekommen, wenn ich meine Anwendung ausführen:Ich erhalte eine Nullpointer in Listview

LogCat

java.lang.NullPointerException: Der Versuch, virtuelle Methode ‚aufzurufen android.view.View android.view.View.findViewById (int)‘auf einer null-Objektreferenz an org.example.km.json3.Helper.SwipeListAdapter.getView (SwipeListAdapter.java:52)

Die Klasse ist unten angegeben:

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

Antwort

1

ändern

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

Um

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

Da die Views in der ersten Zeit erstellt werden, dass getView() aufgerufen wird (es gibt keine View wiederverwendet werden, noch) nicht, Ihre convertView null ist .

Sie haben das Layout für diesen Fall richtig aufgepumpt ... Sie speichern jedoch die zurückgegebene View nicht. Auf diese Weise bleibt convertView null und convertView.findViewById() erzeugt eine Null-Zeiger-Ausnahme

+0

Ty es funktionierte . Danke –

+0

Ich bin froh, dass ich dir helfen konnte! – W0rmH0le

1

Sie setzen nie, was mit dem inflater initialisiert werden soll:

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

Was bedeutet convertView wurde mit diesem Layout nie initialisiert