Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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中web服务/数组列表的获取列表_Android_Listview_Arraylist_Android Asynctask - Fatal编程技术网

android中web服务/数组列表的获取列表

android中web服务/数组列表的获取列表,android,listview,arraylist,android-asynctask,Android,Listview,Arraylist,Android Asynctask,我有一个从web服务获取项目列表的应用程序。web服务答复为 "1234: Apple \n 3456:LINUX \n 5543:Windows \n" 在客户端时,我接收数据作为 1234: Apple 3456: LINUX 5543: Windows 现在,我希望每个项目都可以点击,就像我点击第一个项目时一样,也就是说,应该启动一个新的活动。最好的方法是什么。我想我应该将它保存到一个数组列表中,但不确定如何使用它以及如何使每个项目都可以单击 这是我的异步任务代码 public v

我有一个从web服务获取项目列表的应用程序。web服务答复为

"1234: Apple \n 3456:LINUX \n 5543:Windows \n"
在客户端时,我接收数据作为

1234: Apple
3456: LINUX
5543: Windows
现在,我希望每个项目都可以点击,就像我点击第一个项目时一样,也就是说,应该启动一个新的活动。最好的方法是什么。我想我应该将它保存到一个数组列表中,但不确定如何使用它以及如何使每个项目都可以单击

这是我的异步任务代码

  public void getlist(String list_type) {

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_LIST);


PropertyInfo typePI = new PropertyInfo();
typePI.setName("type");
typePI.setValue(list_type);
typePI.setType(double.class);

request.addProperty(typePI);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

try {
    androidHttpTransport.call(SOAP_ACTION_LIST, envelope);
    SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
    ServerResponse = response.toString();
} catch (Exception e) {
    e.printStackTrace();
}           
  }


public class getlist extends AsyncTask<String, Void, Void>{

@Override
protected Void doInBackground(String... params) {
    list(type);
    return null;
}
@Override
protected void onPostExecute(Void result) {
    Log.i("List Ressults", "onPostExecute");
    if (ServerResponse==null) {
        tv.setText("Please Try again"); // no response from server SOAP error/ server refused the connection.
    }
    tv.setText(ServerResponse);
}
@Override
protected void onPreExecute() {
    Log.i("List Results", "onPreExecute");
    tv.setText("Please Wait...");
}
@Override
protected void onProgressUpdate(Void... values) {
    Log.i("List Ressults", "onProgressUpdate");
}
public void getlist(字符串列表\u类型){
SoapObject请求=新的SoapObject(名称空间、方法名称和列表);
PropertyInfo typePI=新的PropertyInfo();
typePI.setName(“类型”);
typePI.setValue(列表类型);
typePI.setType(double.class);
request.addProperty(typePI);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
试一试{
调用(SOAP\u ACTION\u列表,信封);
SoapPrimitive响应=(SoapPrimitive)信封.getResponse();
ServerResponse=response.toString();
}捕获(例外e){
e、 printStackTrace();
}           
}
公共类getlist扩展了异步任务{
@凌驾
受保护的Void doInBackground(字符串…参数){
列表(类型);
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
Log.i(“列出Ressults”、“onPostExecute”);
if(ServerResponse==null){
tv.setText(“请重试”);//服务器没有响应SOAP错误/服务器拒绝连接。
}
tv.setText(ServerResponse);
}
@凌驾
受保护的void onPreExecute(){
Log.i(“列出结果”、“onPreExecute”);
tv.setText(“请稍候…”);
}
@凌驾
受保护的void onProgressUpdate(void…值){
Log.i(“列表结果”、“onProgressUpdate”);
}
我的最终要求是让所有项目都可以点击

这是logcat

  12-23 12:38:26.295: E/AndroidRuntime(2356): java.lang.NullPointerException
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) 
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at org.json.JSONTokener.nextValue(JSONTokener.java:94)
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at org.json.JSONArray.<init>(JSONArray.java:92)
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at org.json.JSONArray.<init>(JSONArray.java:108)
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at com.myapp.listvie.Promotions.onCreateView(Promotions.java:74)
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
  12-23 12:38:26.295: E/AndroidRuntime(2356):   at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:550)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:509)
 12-23 12:38:26.295: E/AndroidRuntime(2356):    at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:490)
12-2312:38:26.295:E/AndroidRuntime(2356):java.lang.NullPointerException
12-2312:38:26.295:E/AndroidRuntime(2356):位于org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
12-2312:38:26.295:E/AndroidRuntime(2356):位于org.json.JSONTokener.nextValue(JSONTokener.java:94)
12-2312:38:26.295:E/AndroidRuntime(2356):位于org.json.JSONArray(JSONArray.java:92)
12-2312:38:26.295:E/AndroidRuntime(2356):位于org.json.JSONArray(JSONArray.java:108)
12-2312:38:26.295:E/AndroidRuntime(2356):在com.myapp.listvie.Promotions.onCreateView(Promotions.java:74)
12-2312:38:26.295:E/AndroidRuntime(2356):位于android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
12-23 12:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-23 12:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:550)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:509)
12-2312:38:26.295:E/AndroidRuntime(2356):在android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:490)

如果字符串超出此响应,请创建一个数组

String list=ServerResponse.split("\n");
现在创建一个阵列适配器并将此阵列设置为它。 在布局中放置列表视图,并将此适配器设置为该列表


在和添加项中,单击listener到您的listview,并将您的操作放入其中。

实现OnItemClickListener接口,并使用arrayadapter作为列表

内部onCreateView()方法:

结果就是你的回答

 JSONArray responseinArray = new JSONArray(responseInString);
ArrayList<String> listItems = new ArrayList<String>();
        for (int i = 0; i < responseinArray .length(); i++) {
            try {
                listItems
                        .add(responseinArray .getJSONObject(i)
                                .getString(BsharpConstant.NAME_CONSTANT)
                                .toString());
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
JSONArray responseinArray=新的JSONArray(responseinstalling);
ArrayList listItems=新的ArrayList();
对于(int i=0;i
产品列表为:

ListView listOfProducts = (ListView) findViewById(R.id.idOfUrView);
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(
         ActivityName.this,
         android.R.layout.simple_list_item_1, listItems);
         listOfProducts.setAdapter(adapter);
                     listOfProducts.setOnItemClickListener(this);
ListView产品列表=(ListView)findViewById(R.id.idOfUrView);
ArrayAdapter适配器=新的ArrayAdapter(
ActivityName.this,
android.R.layout.simple_list_item_1,listItems);
产品列表。setAdapter(适配器);
setOnItemClickListener(this);
实现MClickListener接口并使用以下代码:

        @Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    String clickedItemName = (String) listOfProductsCategory
            .getItemAtPosition(position);
    int clickedItemId = (int) listOfProductsCategory
            .getItemIdAtPosition(position);

    Toast.makeText(this.getActivity(),
            "Product is getting load : " + clickedItemName,
            Toast.LENGTH_SHORT).show();
    //call your method if u want
}
@覆盖
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
String clickedItemName=(String)产品目录列表
.getItemAtPosition(位置);
int clickedItemId=(int)产品目录列表
.GetItemIDataPosition(位置);
Toast.makeText(this.getActivity(),
“产品正在加载:”+单击编辑项名称,
吐司。长度(短)。show();
//如果需要,请调用您的方法
}

我已经尝试过像@vipul mittal所说的那样做,但是列表视图没有填充。String[]list={};ServerResponse=response.toString();for(int I=0;I