为什么android中的视图返回null

为什么android中的视图返回null,android,listview,view,nullpointerexception,convertview,Android,Listview,View,Nullpointerexception,Convertview,我有3个显示listview的活动,它有一个显示图标的图像和显示数据的textview。我想制作一个适配器,可以对这些活动的listview使用general。但当我运行我的应用程序时,logcat会向我显示空指针异常 08-25 22:43:04.090 28942-28942/com.example.xiaoking.dilibus A/art:art/runtime/thread.cc:1113]引发新异常“尝试调用虚拟方法”布尔android.view.view.isSelected()

我有3个显示listview的活动,它有一个显示图标的图像和显示数据的textview。我想制作一个适配器,可以对这些活动的listview使用general。但当我运行我的应用程序时,logcat会向我显示空指针异常

08-25 22:43:04.090 28942-28942/com.example.xiaoking.dilibus A/art:art/runtime/thread.cc:1113]引发新异常“尝试调用虚拟方法”布尔android.view.view.isSelected()“在null对象引用上”发生意外的挂起异常:java.lang.NullPointerException:尝试在null对象引用上调用虚拟方法“int-android.view.view.GetImportEntForAccessibility()”

我知道这个错误的原因是我的convertview返回null。但我不知道为什么,我怎么能修好它

这是我的适配器:

List listObjects;
Context context;
ViewHolder viewHolder;
int typeOfObject;

public CustomCityAdapter(Context context, List objects) {
    this.listObjects  = objects;
    this.context = context;
}

public CustomCityAdapter(Context context, List objects, int typeOfObject) {
    this.listObjects  = objects;
    this.context = context;
    this.typeOfObject = typeOfObject;
}

public void setArrayListCity(List listObjects) {
    this.listObjects = listObjects;
}

@Override
public int getCount() {
    return listObjects.size();
}

@Override
public Object getItem(int position) {
    return listObjects.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    City city = new City();
    getObject(city,position,convertView,parent);
    viewHolder.textView.setText(city.getCityName());
    return convertView;
}

private void getObject(Object object, int position, View convertView,ViewGroup parent){
     object = getItem(position);
    if(convertView == null) {
        convertView = LayoutInflater.from(context).inflate(R.layout.custom_cell_list_cities, parent, false);
        viewHolder = new ViewHolder();
        viewHolder.textView = (TextView) convertView.findViewById(R.id.tv_cell_item_city);
        convertView.setTag(viewHolder);
    }
    else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
}
以下是我的活动:

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;
}
工具栏;
CustomCityAdapter myAdapter;
ArrayList arrCities=新的ArrayList();
自定义列表视图myListView;
CoordinatorLayout视图CoordinatorLayout;
布尔值isDownloadSuccess=true;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u选择城市);
findViewByID();
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
loadCityToListView();
//下载并插入RTCITYTODB();
myListView.setCities(arrCities);
myListView.myListViewSetOnClickListener(这是SearchingTicketActivity.RESULT\u CODE\u SAVE);
Log.d(“Test”、“oncreateselection”);
}
@凌驾
受保护的void onResume(){
super.onResume();
loadCityToListView();
}
@凌驾
public void findViewByID(){
工具栏=(工具栏)findViewById(R.id.Selecting\u city\u activity\u toolbar);
myListView=(CustomListView)findViewById(R.id.lv_cities);
viewCoordinatorLayout=(CoordinatorLayout)findViewById(R.id.CoordinatorLayoutSelection);
}
@凌驾
public void setOnClickListener(){
super.setOnClickListener();
}
私有void loadCityToListView(){
arrCities=DiLiBusDatabaseHelper.getInstance(this.getListCities();
//CustomListView myListView=新建CustomListView(此);
myAdapter=新的CustomCityAdapter(此为arrCities);
myListView.setAdapter(myAdapter);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u选择城市,菜单);
SearchView SearchView=(SearchView)菜单.findItem(R.id.search).getActionView();
searchView.setMaxWidth(整数.MAX_值);
setOnQueryTextListener(这个);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
返回super.onOptionsItemSelected(项目);
}
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回true;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
返回setOnQueryTextListenerSearchView(newText);
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
}
@凌驾
受保护的布尔值setOnQueryTextListenerSearchView(字符串查询){
if(query.equals(“”){
arrCities=DiLiBusDatabaseHelper.getInstance(this.getListCities();
myAdapter.setArrayListCity(arrCities);
myAdapter.notifyDataSetChanged();
myListView.setCities(arrCities);
返回true;
}
arrCities=DiLiBusDatabaseHelper.getInstance(this.getListCityByName(query);
myAdapter.setArrayListCity(arrCities);
myAdapter.notifyDataSetChanged();
myListView.setCities(arrCities);
Log.d(“列表大小:”,arrCities.Size()+);
返回true;
}
@凌驾
公共布尔onSupportNavigateUp(){
onBackPressed();
返回true;
}

我发现此函数存在问题:

getObject(city,position,convertView,parent);

若convertView==null,则在getObject方法中,convertView将被分配新值


但是convertView只在getObject方法中有值,在getView中,在getObject(城市、位置、convertView、父对象)的下面,convertView为空。

请显示名为View.isSelected方法的活动代码。我想您在调用isSelected方法之前缺少了define视图。@HoángVũNam我刚刚编辑了我的问题。我认为在活动中没有问题。Bcuz若我编辑代码使列表视图只加载一个列表对象,那个么它运行得很好。我刚刚添加了我的答案。让我们检查一下:谢谢你,兄弟,你的问题是正确的,解决方法是让getObject返回视图:)。非常感谢。很高兴能帮助你
convertView = LayoutInflater.from(context).inflate(R.layout.custom_cell_list_cities, parent, false);