Android 我想获取文件名并在o列表中显示它们,但有错误

Android 我想获取文件名并在o列表中显示它们,但有错误,android,listview,sftp,jsch,Android,Listview,Sftp,Jsch,我想获取文件名并在o列表中显示它们,但有错误 ls=sftpChannel.ls("/home/volkan/"); l.setAdapter(new BaseAdapter() { public View getView(int position, View convertView, ViewGroup parent) {

我想获取文件名并在o列表中显示它们,但有错误

 ls=sftpChannel.ls("/home/volkan/");

                     l.setAdapter(new BaseAdapter() {

                         public View getView(int position, View convertView,
                                ViewGroup parent) {
                             view= new TextView(parent.getContext());

                             l.post(new Runnable() {
                                 public void run() {
                                     for(int i=0;i<ls.size();i++){
                                            view.setText(((LsEntry)ls.get(i)).getFilename());
                                            return;}
                                 }
                             });
                            return null;
                        }
                        public int getCount() {
                             return ls.size();
                        }

                        public Object getItem(int position) {
                            // TODO Auto-generated method stub
                            return null;
                        }

                        public long getItemId(int position) {
                            // TODO Auto-generated method stub
                            return 0;
                        }



                     });
ls=sftpChannel.ls(“/home/volkan/”);
l、 setAdapter(新的BaseAdapter(){
公共视图getView(int位置,视图转换视图,
视图组(父级){
视图=新文本视图(parent.getContext());
l、 post(新的Runnable(){
公开募捐{

对于(int i=0;i您无法从其他线程更新UI。我已更新了您的代码。请检查

 ls=sftpChannel.ls("/home/volkan/");

l.setAdapter(new BaseAdapter() {

public View getView(int position, View convertView,
       ViewGroup parent) {
    view= new TextView(parent.getContext());  
    view.setText(((LsEntry)ls.get(position)).getFilename());
    return view;
}
public int getCount() {
    return ls.size();
}

public Object getItem(int position) {
   // TODO Auto-generated method stub
   return null;
}

public long getItemId(int position) {
   // TODO Auto-generated method stub
   return 0;
}

});

您从何处调用这段代码?根据错误消息,您使用的不是UI线程。这会导致您的问题

适配器实现也已中断,getView应返回position参数所引用的视图

public View getView(int position, View convertView, ViewGroup parent) {
    final View view = new TextView(parent.getContext());
    l.post(new Runnable() {
        view.setText(((LsEntry)ls.get(position)).getFilename());
    });
    return view;
}

但这仍然很难看,因为您应该缓存已解析的文件名…更好的方法可能是imho,在单独的线程中进行文件名映射,如果有结果,则设置适配器。这将大大简化您的工作…

是吗?错误清楚地说明了问题所在。“只有创建视图层次结构的原始线程才能接触其视图”。只需谷歌搜索该错误。有一个“i”i是循环的计数器。此代码中的循环在哪里?我添加了循环,但有错误:11-06 16:22:18.296:E/AndroidRuntime(20164):致命异常:thread-1458 11-06 16:22:18.296:E/AndroidRuntime(20164):android.view.ViewRootImpl$CalledFromErrorThreadException:只有创建视图层次结构的原始线程才能接触其视图。11-06 16:22:18.296:E/AndroidRuntime(20164):在android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4267)11-06 16:22:18.296:E/AndroidRuntime(20164):在android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:855)将
position
写入
i
ls=sftpChannel.ls(“/home/volkan/”);l.setAdapter(new BaseAdapter(){public View getView(int-position,View-convertView,ViewGroup-parent){View=new TextView(parent.getContext());对于(int i=0;ierror:此行有多个标记-标记上的语法错误,应改为AnnotationName-语法错误,插入“枚举标识符”以完成EnumHeaderName-语法错误,插入“EnumBody”“要完成ClassBodyDeclarationsWell,如果你真的想学习如何做,我建议你上一些简单的J2SE课程,然后阅读官方的android开发网站,或者