ListView崩溃的应用程序

时间:2015-07-15 07:54:50

标签: android listview

尝试列出目录中的所有文件,该目录仅包含音频文件,但是当我在设备上运行应用程序时,应用程序崩溃,这里是主要的活动代码:

#include "Renderer2D.h"

class Batch2DRenderer : public Renderer2D
{
private:
    GLuint m_VAO;
    IndexBuffer * m_IBO;
    GLsizei m_IndexCount;
    GLuint m_VBO;
    VertexData * m_Buffer;
    std::vector<GLuint> m_TextureSlots;

public:
    Batch2DRenderer();
    ~Batch2DRenderer();

    void Begin() override;
    void End() override;

    void Submit(const Renderable2D& renderable) override;
    void Submit(const Label& label) override;
    void Submit(const Rectangle2D& rect) override;
    void Submit(const Sprite& spr) override;

    void Flush() override;

private:
    void init();
    float SubmitTexture(GLuint textureID);
};

由于我以前没有尝试过ListView,这对我来说似乎很陌生,其他问题在这里似乎也解决了我的问题。 这也是我的logcat:

public class MainActivity extends AppCompatActivity {

private List<String> myList;
File file;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListView listView = (ListView) findViewById(R.id.listerX);
    myList = new ArrayList<String>();

    File directory = Environment.getExternalStorageDirectory();
    file = new File( directory + "/myAppCache/" );
    File list[] = file.listFiles();

    for( int i=0; i< list.length; i++)
    {
        myList.add( list[i].getName() );
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, myList);
    listView.setAdapter(adapter); //Set all the file in the list.
}

任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:0)

因为您的list []为空。你不能得到null的长度。 将您的代码更改为

File list[] = file.listFiles();
if (list != null)
{
    for( int i=0; i< list.length; i++)
    {
        myList.add( list[i].getName() );
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
          android.R.layout.simple_list_item_1, android.R.id.text1, myList);
    listView.setAdapter(adapter);
}

答案 1 :(得分:0)

您收到NullPointerException错误,因为您的列表未正确初始化并且始终返回null。

首先,您需要以正确的方式初始化它,以便您可以阅读它。

Hadi Mohammadi的回答不完整。通过这种方式,它将阻止您获取NullPointerException错误,但它仍然是null,因此您需要关注它。