2016-07-05 3 views
0

에 NullPointerException이 점점 계속 :나는 내 응용 프로그램을 실행할 때 나는 NullPointerException이납니다 ListView에

로그 캣을

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

ViewsgetView()를 호출 할 때 처음에 생성되기 때문에

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

에 당신의 convertView가 null의 경우, (더 View 재사용하지, 아직 할 수있다) .

이 경우 레이아웃을 적절히 팽창시키고 있습니다. 그러나 반환 된 View은 저장하지 않습니다. 이 방법은 convertView가 null 남아 convertView.findViewById()는 널 포인터 예외를 생성

+0

타이로 초기화되지 않았다 convertView을 의미한다 . 감사합니다 –

+0

나는 당신을 도울 수있어서 기뻐요! – W0rmH0le

1

당신은 인플레이터로 초기화되어야 하는지를 설정하지 :

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

는 일이 레이아웃

관련 문제