Как инициализировать listView в AsyncTask?

389
27 мая 2017, 16:21

Не запускается приложение,не могу понять где ошибка.Метод doInBackground выполняется, инициализирует массив для listView. Помогите, пожалуйста.

public class MainActivity extends ActionBarActivity {
private DrawerLayout myDrawerLayout;
private ListView myDrawerList;
private ActionBarDrawerToggle myDrawerToggle;
// navigation drawer title
private CharSequence myDrawerTitle;
// used to store app title
private CharSequence myTitle;
private String[] viewsNames;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MyTask m=new MyTask();
    myDrawerList = (ListView) findViewById(R.id.left_drawer);
    m.setList(myDrawerList);
    m.execute();
    myTitle =  getTitle();
    myDrawerTitle = getResources().getString(R.string.menu);
    // load slide menu items
    //viewsNames = getResources().getStringArray(R.array.views_array);
    myDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

    //myDrawerList.setAdapter(new ArrayAdapter<String>(this,
            //R.layout.drawer_list_item, viewsNames));
    // enabling action bar app icon and behaving it as toggle button
    android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    myDrawerToggle = new ActionBarDrawerToggle(this, myDrawerLayout,
            R.string.open_menu,
            R.string.close_menu
    ) {
        public void onDrawerClosed(View view) {
            getSupportActionBar().setTitle(myTitle);
            // calling onPrepareOptionsMenu() to show action bar icons
            invalidateOptionsMenu();
        }
        public void onDrawerOpened(View drawerView) {
            getSupportActionBar().setTitle(myDrawerTitle);
            // calling onPrepareOptionsMenu() to hide action bar icons
            invalidateOptionsMenu();
        }
    };
    myDrawerLayout.setDrawerListener(myDrawerToggle);
    if (savedInstanceState == null) {
        // on first time display view for first nav item
        displayView(0);
    }
    myDrawerList.setOnItemClickListener(new DrawerItemClickListener());
}
private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(
            AdapterView<?> parent, View view, int position, long id
    ) {
        // display view for selected nav drawer item
        displayView(position);
    }
}
private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
        case 0:
            fragment = new FirstFragment();
            break;
        case 1:
            fragment = new SecondFragment();
            break;
        case 2:
            fragment = new ThirdFragment();
            break;
        default:
            break;
    }
    if (fragment != null) {
        android.app.FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();
        // update selected item and title, then close the drawer
        myDrawerList.setItemChecked(position, true);
        myDrawerList.setSelection(position);
        setTitle(viewsNames[position]);
        myDrawerLayout.closeDrawer(myDrawerList);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // toggle nav drawer on selecting action bar app icon/title
    if (myDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    // Handle action bar actions click
    switch (item.getItemId()) {
        case R.id.action_settings:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
/**
 * Called when invalidateOptionsMenu() is triggered
 */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // if navigation drawer is opened, hide the action items
    boolean drawerOpen = myDrawerLayout.isDrawerOpen(myDrawerList);
    menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
    return super.onPrepareOptionsMenu(menu);
}
@Override
public void setTitle(CharSequence title) {
    myTitle = title;
    getSupportActionBar().setTitle(myTitle);
}
/**
 * When using the ActionBarDrawerToggle, you must call it during
 * onPostCreate() and onConfigurationChanged()...
 */
@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    myDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggls
    myDrawerToggle.onConfigurationChanged(newConfig);
}
class MyTask extends AsyncTask<Void, Void, Void> {
    private String[] mainMenu;
    private ListView list;
    @Override
    protected Void doInBackground(Void... params) {
        ParsingWebSite w=new ParsingWebSite("http://auto-aksrzn.ru/");
        List<ElementMenu> m= null;
        try {
            m = w.getMenuForUL("ty-menu__items cm-responsive-menu","ty-menu__item-link");
        } catch (IOException e) {
            e.printStackTrace();
        }
        mainMenu=new String[m.size()];
        for(int i=0;i<mainMenu.length;i++)
        {
            mainMenu[i]=m.get(i).getName();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(MainActivity.this,
                R.layout.drawer_list_item, mainMenu);
        adapter.notifyDataSetChanged();
        list.setAdapter(adapter);
    }
    public String[] getMainMenu() {
        return mainMenu;
    }
    public void setMainMenu(String[] mainMenu) {
        this.mainMenu = mainMenu;
    }
    public void setList(ListView list) {
        this.list = list;
    }

}

}

READ ALSO
Что в себе содержит Environment?

Что в себе содержит Environment?

Добрый деньКакую информацию в себе содержит интерфейс Environment? Я так понимаю это интерфейс для работы с properties? Откуда он берёт эти properties? И как...

332
Push notification

Push notification

При отображения множества push notification каждому устанавливается свой Pending Intent, но с разными extraно при нажатии на пуш отображается не свой обработчик

253