listview异步加载网络数据,不能成功加载,教,listview异步
listview,adpater, 我放入的模拟数据可以加载,后台也成功获取到数据了,就是无法加载求教一个,没空回答给个相关学习链接也可以!!
package com.yanz.machine.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.TextHttpResponseHandler;
import com.yanz.machine.myapplication.adapter.SearchAdapter;
import com.yanz.machine.myapplication.entity.SCurrentStock;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import java.util.ArrayList;
import java.util.List;
import cz.msebera.android.httpclient.Header;
public class DeletaeActivity extends AppCompatActivity {
private String uri = "/stock/findStock";
private ImageView ivDeleteText;
private EditText etSearch;
private Button btSearch;
private ListView lvResult;
private List<SCurrentStock> sCurrentStocks = new ArrayList<SCurrentStock>();
private SearchAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_deletae);
ivDeleteText = (ImageView) findViewById(R.id.iv_del_deleteText);
etSearch = (EditText) findViewById(R.id.et_del_search);
btSearch = (Button) findViewById(R.id.bt_del_search);
lvResult = (ListView) findViewById(R.id.lv_del_result);
adapter = new SearchAdapter(this,sCurrentStocks);
lvResult.setAdapter(adapter);
ivDeleteText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
etSearch.setText("");
}
});
etSearch.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
if (s.length() == 0) {
ivDeleteText.setVisibility(View.GONE);
} else {
ivDeleteText.setVisibility(View.VISIBLE);
}
}
});
btSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(DeletaeActivity.this,"search",Toast.LENGTH_SHORT).show();
SCurrentStock s2 = new SCurrentStock();
s2.setFcsQuantity(100.0);
s2.setCcsPartName("更改测试名字");
s2.setCcsPartStd("更改测试guige");
s2.setCcsWhName("更改测试仓库");
sCurrentStocks.add(s2);
adapter.notifyDataSetChanged();
initData();
}
});
}
private void initData(){
Log.e("yanz","开始加载数据");
//String url = HttpUtil.BASE_URL+uri;
String url = "http://192.168.1.109:8080/graduation/stock/findStock";
RequestParams params = new RequestParams();
params.put("pArtStdF",etSearch.getText().toString());
//params.put("pArtStdS"," ");
params.put("partName","不锈钢钢板");
//params.put("whCode","011101");
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
Toast.makeText(DeletaeActivity.this,"错误:"+statusCode,Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
try {
String[] message = responseString.split("@@");
String result = message[1];
ObjectMapper objectMapper = new ObjectMapper();
sCurrentStocks = objectMapper.readValue(
result,
new TypeReference<List<SCurrentStock>>() {}
);
sCurrentStocks.get(0).getCcsWhName();
sCurrentStocks.get(0).getCcsPartName();
//adapter = new SearchAdapter(DeletaeActivity.this,sCurrentStocks);
//lvResult.setAdapter(adapter);
adapter.notifyDataSetChanged();
}catch (Exception e){
e.printStackTrace();
}
}
});
}
}
解决方案
result,
new TypeReference<List<SCurrentStock>>() {}
);
你这里sCurrentStocks 已经改变了引用了,adapter里面的数据不再指向sCurrentStocks 了,所以没更新。 sCurrentStocks.clear();
sCurrentStocks.addAll(objectMapper.readValue(
result,
new TypeReference<List<SCurrentStock>>() {}
)); 用 Picasso多好
用户评论