我想用两个TextView和来自远程服务器的数据填充ListView



我想用两个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);
}

相关内容

最新更新