Activity
创建了一个新的Thread
。run()
方法通过输入流获取对象(vector
)。Vector
的{{1}}上显示此ListView
的内容。direc
。代码:
Exception
以下是Logcat的意思:
public class FileExplorerActivity extends Activity implements Runnable
{
public static final String TAG="ricky";
Vector<String> dirs = new Vector<String>();
ListView direc;
static ArrayAdapter<String> arrayAdapter;
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fileexplorer);
direc = (ListView) findViewById(R.id.directoriesss);
handler = new Handler();
Thread thread = new Thread(this);
thread.start();
}
public FileExplorerActivity()
{
}
public void run()
{
Log.d(TAG, "FileExplorer: Thread started");
try
{
Log.d(TAG, "FileExplorer: reading data");
dirs = (Vector<String>) ConnectionThread.din.readObject();
Log.d(TAG, "FileExplorer: read data");
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.activity_list_item,
android.R.id.text2 , dirs);
Log.d(TAG, "FileExplorer: ArrayAdapter created");
handler.post( new Runnable() {
public void run()
{
Log.d(TAG, "FileExplorer: In handler Thread");
direc.setAdapter(arrayAdapter);
Log.d(TAG, "FileExplorer: Updated UI");
}
});
Log.d(TAG, "FileExplorer: Directory set");
}catch (Exception e) {
Log.d(TAG, "FileExplorerActivity: Exception:"+e.getMessage());
}
}
}
答案 0 :(得分:1)
请注意NullPointerException
出现的行:
android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
这是因为android.R.layout.activity_list_item
不包含android.R.id.text2
。
您可以改为使用android.R.id.text1
或将行布局替换为simple_list_item_2
。
我建议您首先创建自己的行布局以避免这些情况。
答案 1 :(得分:0)
移动此
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item,
android.R.id.text2 , dirs);
在run()方法中,以便它在UI线程上运行。您不应该在UI线程之外创建ArrayAdapter。