나는 listview를 표시하는 3 액티비티가 있으며 데이터를 표시하기 위해 아이콘과 텍스트 뷰를 표시하는 이미지가 있습니다. 나는이 활동에 대한 나의 listview를 위해 일반을 사용할 수있는 어댑터를 만들고 싶다. 하지만 내 앱을 실행할 때 logcat이 null 포인터 예외를 표시합니다.왜 안드로이드에서 뷰 반환 null
08-25 22 : 43 : 04.090 28942-28942/com.example.xiaoking.dilibus의 A/아트 : 아트/실행/thread.cc : 1,113] 가상 메소드를 호출하려고 '새로운 예외를 발생 부울 android.view.View.isSelected() '예기치 않은 보류중인 예외가있는 null 객체 참조': java.lang.NullPointerException : null 객체 참조에 가상 메소드 'int android.view.View.ViewImportantForAccessibility()'를 호출하려고 시도했습니다
이 오류는 내 convertview 반환 null입니다. 하지만 왜 고칠 수 있을지 모르겠다. 나는이 기능에 문제가 발견
Toolbar toolbar;
CustomCityAdapter myAdapter;
ArrayList<City> arrCities = new ArrayList<City>();
CustomListView myListView;
CoordinatorLayout viewCoordinatorLayout;
boolean isDownloadSuccess = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choosing_city);
findViewByID();
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
loadCityToListView();
//downloadAndInsertCityToDB();
myListView.setCities(arrCities);
myListView.myListViewSetOnClickListener(this, SearchingTicketActivity.RESULT_CODE_SAVE);
Log.d("Test","OncreateChoosing");
}
@Override
protected void onResume() {
super.onResume();
loadCityToListView();
}
@Override
public void findViewByID() {
toolbar = (Toolbar) findViewById(R.id.choosing_city_activity_toolbar);
myListView = (CustomListView)findViewById(R.id.lv_cities);
viewCoordinatorLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayoutChoosing);
}
@Override
public void setOnClickListener() {
super.setOnClickListener();
}
private void loadCityToListView() {
arrCities = DiLiBusDatabaseHelper.getInstance(this).getListCities();
// CustomListView myListView = new CustomListView(this);
myAdapter = new CustomCityAdapter(this, arrCities);
myListView.setAdapter(myAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_choosing_city, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return setOnQueryTextListenerSearchView(newText);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected boolean setOnQueryTextListenerSearchView(String query) {
if (query.equals("")) {
arrCities = DiLiBusDatabaseHelper.getInstance(this).getListCities();
myAdapter.setArrayListCity(arrCities);
myAdapter.notifyDataSetChanged();
myListView.setCities(arrCities);
return true;
}
arrCities = DiLiBusDatabaseHelper.getInstance(this).getListCityByName(query);
myAdapter.setArrayListCity(arrCities);
myAdapter.notifyDataSetChanged();
myListView.setCities(arrCities);
Log.d("List Size: ", arrCities.size() + "");
return true;
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
View.isSelected 메소드를 호출 한 활동 코드를 표시하십시오. 난 isSelected 메서드를 호출하기 전에 정의 된 뷰가 누락되었다고 생각합니다. –
@ HoàngVũNam 방금 내 질문을 편집했습니다. 나는 활동에 문제가 있다고 생각하지 않는다. Bcuz 목록보기가 하나의 목록 객체 만로드하도록 코드를 편집하면 완벽하게 실행됩니다. –
방금 내 대답을 추가했습니다. 하자 체크 : http://stackoverflow.com/questions/7893492/is-java-really-passing-objects-by-value –