Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用ArrayAdapter添加自定义适配器?_Android_Web Services_Android Arrayadapter_Custom Adapter - Fatal编程技术网

Android 如何使用ArrayAdapter添加自定义适配器?

Android 如何使用ArrayAdapter添加自定义适配器?,android,web-services,android-arrayadapter,custom-adapter,Android,Web Services,Android Arrayadapter,Custom Adapter,我正在尝试添加自定义适配器,我想在其中添加文件夹图像和从web服务获取的特定文件夹的名称 请查看我的代码: ListView listview; LazyAdapter adapter; private String[] folderslist; String User_ID; int i; static String ID = "ID"; static String KEY_Name = "FolderName"; static String ParentID = "ParentID";

我正在尝试添加自定义适配器,我想在其中添加文件夹图像和从web服务获取的特定文件夹的名称

请查看我的代码:

ListView listview;
LazyAdapter adapter;

private String[] folderslist;

String User_ID;
int i;

static String ID = "ID";
static String KEY_Name = "FolderName";
static String ParentID = "ParentID";
static String CreatedBy = "CreatedBy";                               

private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://***.***.*.*/somethinghere/something.asmx";
private static final String TREEDATA_METHOD = "TreeData";
private static final String SOAP_ACTION_TREEDATA = "http://tempuri.org/TreeData";

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

    Intent Intent = getIntent();
    User_ID = Intent.getStringExtra("User_ID");

    Treedata();

    listview.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

            String item = (String) listview.getItemAtPosition(position);
            ID = item;          
            Intent mIntent = new Intent(getApplicationContext(), Files_Folders_Activity.class);
            mIntent.putExtra("ID", ID);

            startActivity(mIntent);

        }
    });

}

        public void Treedata(){
            try {

                SoapObject datarequest = new SoapObject(NAMESPACE, TREEDATA_METHOD);

                datarequest.addProperty("UserID", User_ID);

                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;
                envelope.setOutputSoapObject(datarequest);

                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                androidHttpTransport.debug = true;

                androidHttpTransport.call(SOAP_ACTION_TREEDATA, envelope);

                SoapObject folderResponse = (SoapObject)envelope.getResponse();

                Log.i("AllFolders", folderResponse.toString());

                folderslist = new String[folderResponse.getPropertyCount()];

                for(i=0; i<folderResponse.getPropertyCount(); i++) {

                    SoapObject SingleFolder = (SoapObject)folderResponse.getProperty(i);

                    Log.i("SingleFolder", SingleFolder.toString());

                    ID= SingleFolder.getProperty(0).toString();
                    KEY_Name = SingleFolder.getProperty(1).toString();
                    ParentID = SingleFolder.getProperty(2).toString();
                    CreatedBy= SingleFolder.getProperty(3).toString();                      

                    folderslist[i] = SingleFolder.getProperty(0).toString();

                    folderslist = new String[] {ID};

                   }

                    data = new ArrayList<FolderList>();
                    for (int i = 0; i < folderslist.length; i++) {

                    FolderList item = new FolderList(images[i], folderslist[i]);
                    data.add(item);

            }   
                    listview = (ListView)findViewById(R.id.listview);

                    LazyAdapter adapter = new LazyAdapter(this, R.layout.jpg_row, data);

                    listview.setAdapter(adapter);

                    listview.setOnItemClickListener(this);
            }

        }
ListView-ListView;
懒散适配器;
私有字符串[]文件夹列表;
字符串用户标识;
int i;
静态字符串ID=“ID”;
静态字符串键\u Name=“FolderName”;
静态字符串ParentID=“ParentID”;
静态字符串CreatedBy=“CreatedBy”;
私有静态最终字符串命名空间=”http://tempuri.org/";
私有静态最终字符串URL=“http://***.*.*.*/somethinghere/something.asmx”;
私有静态最终字符串TREEDATA_METHOD=“TREEDATA”;
私有静态最终字符串SOAP\u ACTION\u TREEDATA=”http://tempuri.org/TreeData";
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.homepage\u布局);
Intent=getIntent();
User_ID=Intent.getStringExtra(“User_ID”);
Treedata();
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
字符串项=(字符串)listview.getItemAtPosition(位置);
ID=项目;
Intent MINENT=新的Intent(getApplicationContext(),Files\u Folders\u Activity.class);
Minent.putExtra(“ID”,ID);
星触觉;
}
});
}
公共无效Treedata(){
试一试{
SoapObject datarequest=新的SoapObject(名称空间,TREEDATA_方法);
datarequest.addProperty(“用户ID”,用户ID);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(datarequest);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
androidHttpTransport.debug=true;
调用(SOAP\u ACTION\u TREEDATA,信封);
SoapObject folderResponse=(SoapObject)信封。getResponse();
Log.i(“AllFolders”,folderResponse.toString());
folderslist=新字符串[folderResponse.getPropertyCount()];

对于(i=0;i首先,无需将适配器设置为内部for循环。每次运行for循环时,它都会将适配器设置为listview。您的代码没有错误,但效率也不高。您应该通过以下方式将ArrayAdapter设置为外部for循环

     for(i=0; i<folderResponse.getPropertyCount(); i++) {

                        SoapObject SingleFolder = (SoapObject)folderResponse.getProperty(i);

                        Log.i("SingleFolder", SingleFolder.toString());

                        ID= SingleFolder.getProperty(0).toString();
                        KEY_Name = SingleFolder.getProperty(1).toString();
                        ParentID = SingleFolder.getProperty(2).toString();
                        CreatedBy= SingleFolder.getProperty(3).toString();

                        System.out.println(ID);
                        System.out.println(KEY_Name);
                        System.out.println(ParentID);
                        System.out.println(CreatedBy);

                        folderslist[i] = SingleFolder.getProperty(0).toString();


                }
          listview = (ListView)findViewById(R.id.listview);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   android.R.layout.simple_list_item_1,android.R.id.text1, folderslist);

        listview.setAdapter(adapter);

        listview.setOnItemClickListener(this);

对于(i=0;iI需要自定义适配器,列表正在显示。问题是我想使用自定义适配器显示来自web的文件夹图像和文件夹名称services@shiva:我已经编辑了我的答案。我一直在学习本教程,但没有得到任何解决方案。我不知道如何将字符串[count];用于Hashmap,所以实际上我使用了ArrayAdapter。
     for(i=0; i<folderResponse.getPropertyCount(); i++) {

                        SoapObject SingleFolder = (SoapObject)folderResponse.getProperty(i);

                        Log.i("SingleFolder", SingleFolder.toString());

                        ID= SingleFolder.getProperty(0).toString();
                        KEY_Name = SingleFolder.getProperty(1).toString();
                        ParentID = SingleFolder.getProperty(2).toString();
                        CreatedBy= SingleFolder.getProperty(3).toString();

                        System.out.println(ID);
                        System.out.println(KEY_Name);
                        System.out.println(ParentID);
                        System.out.println(CreatedBy);

                        folderslist[i] = SingleFolder.getProperty(0).toString();


                }
          listview = (ListView)findViewById(R.id.listview);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,   android.R.layout.simple_list_item_1,android.R.id.text1, folderslist);

        listview.setAdapter(adapter);

        listview.setOnItemClickListener(this);