我想用两个TextView和来自远程服务器的数据填充ListView。这是我的异步类:
class Dataload extends AsyncTask<String,Void,ArrayAdapter> {
String returnString, s = "";
String name;
int quantity,price;
ArrayList<String> list = new ArrayList<String>();
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(ArrayAdapter adapter) {
ls.setAdapter(adapter);
}
@Override
protected ArrayAdapter doInBackground(String... params) {
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
// define the parameter
postParameters.add(new BasicNameValuePair("h", s));
String response = null;
// call executeHttpPost method passing necessary parameters
try {
response = CustomHttpClient.executeHttpPost(
"http://grclive.16mb.com/select_rum.php", postParameters);
String result = response.toString();
try {
returnString = "";
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
name = json_data.getString("r_name");
quantity=json_data.getInt("r_quantity");
price=json_data.getInt("r_price");
list1.add(name + " " + quantity + " L" + " " + price + " ₹");
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
} catch (Exception e) {
Log.e("log_tag", "Error in http connection!!" + e.toString());
}
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(getApplicationContext(),R.layout.textfield, list1);
return adapter;
}
}
我为ListView:编写了一个自定义适配器类
public class MyAdapter extends BaseAdapter {
Activity context;
ArrayList<String> list1;
TextView t1,t2;
MyAdapter(Activity context,ArrayList list1)
{
this.context=context;
this.list1=list1;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
private class ViewHolder {
TextView txtViewTitle;
TextView txtViewDescription;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
LayoutInflater inflater = context.getLayoutInflater();
if (convertView == null)
{
convertView = inflater.inflate(R.layout.list_text, null);
holder = new ViewHolder();
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.t1);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.t2);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.txtViewTitle.setText(list1.get(position));
// holder.txtViewDescription.setText(description[position]);
return convertView;
}
}
现在,我想将ListView值发送到适配器类,以便在TextViews中显示。请帮我完成这个。
您需要更改以下行:
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
有了这个:
@Override
public int getCount() {
return list1.size();
}
@Override
public Object getItem(int position) {
return list1.get(position);
}