Android 如何使用ArrayAdapter添加自定义适配器?
我正在尝试添加自定义适配器,我想在其中添加文件夹图像和从web服务获取的特定文件夹的名称 请查看我的代码: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";
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);