如何在listview中显示意图数据?

时间:2014-12-09 11:54:32

标签: android json android-listview

我正在创建app,在我的活动中我使用了getIntent.getstringExtra(“string”),这个字符串包含json响应,在该响应中我有不同的字段,我需要在列表视图中显示,所以如何做到这一点< / p>

检查此问题How to display response in next activity

class AttemptLogin extends AsyncTask<String, String, String> {

    boolean failure = false;
    JSONObject jobj;
    String resultname;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(getActivity());
        pDialog.setMessage("Processing..");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @SuppressWarnings("unused")
    @Override
    protected String doInBackground(String...args) {

        Looper.prepare();
        String userids = strtext.toString();
        String agesfrom = spfrom.getText().toString();
        String agesto=spto.getText().toString();
        String heightfroms=spheightfrom.getText().toString();
        String heighttos=spheightto.getText().toString();
        String language=splang.getText().toString();
        String religion = sprelg.getText().toString();
        String marriage=spmrgstatus.getText().toString();

        String contri=spcountry.getText().toString();
        String states=spstate.getText().toString();
        String city=spcity.getText().toString();

        System.out.println("Email : " + userids);
        System.out.println("Email : " + agesfrom);
        System.out.println("Days : " + agesto);
        System.out.println("Months : " + heightfroms);
        System.out.println("Years : " + heighttos);
        System.out.println("User : " + language);
        System.out.println("Password : " + religion);
        System.out.println("Gender : " + marriage);
        System.out.println("First NM : " + contri);
        System.out.println("Last NM : " + states);
        System.out.println("Profile : " + city);



         try {
             //Building Parameters


             List<NameValuePair> params = new ArrayList<NameValuePair>();
             params.add(new BasicNameValuePair("user_login_id", userids));
             params.add(new BasicNameValuePair("age_from", agesfrom));
             params.add(new BasicNameValuePair("age_to", agesto));
             params.add(new BasicNameValuePair("height_from", heightfroms));
             params.add(new BasicNameValuePair("height_to", heighttos));
             params.add(new BasicNameValuePair("language", language));
             params.add(new BasicNameValuePair("religion", religion));
             params.add(new BasicNameValuePair("maritalstatus", marriage));
             params.add(new BasicNameValuePair("country", contri));
             params.add(new BasicNameValuePair("state", states));
             params.add(new BasicNameValuePair("city", city));


             params.add(new BasicNameValuePair("version", "apps"));

             Log.d("request!", "starting");
             // getting product details by making HTTP request
            json = jsonParser.makeHttpRequest (
                 SEARCH_URL, "POST", params);

             //check your log for json response
             Log.d("Request attempt", json.toString());


             final String str = json.toString();

             jobj = new JSONObject(json.toString());
             final String msg = jobj.getString("searchresult");
             resultname=jobj.getString(TAG_NAME);

             return json.getString(TAG_SUCCESS);
             }catch (JSONException e) {
             e.printStackTrace();
         }
         return null;
    }

    // After completing background task Dismiss the progress dialog

    protected void onPostExecute(String file_url) {
        //dismiss the dialog once product deleted
         pDialog.dismiss();

            Intent intent=new Intent(getActivity(),SearchResults.class);
            intent.putExtra("id", strtext);

                intent.putExtra("whole",resultname);

            startActivity(intent);

}}

我的下一个活动

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_view_searchresult);

    Id=this.getIntent().getStringExtra("id");
    System.out.println("searching id"+Id);
    results=this.getIntent().getStringExtra("whole");
    System.out.println("Results"+results);
    nomathc=(TextView)findViewById(R.id.no_match);

{ “信息搜索结果”:   [{“match_detail_id”:369,“profile_id”:“GM686317”,“name”:“Sonal Patel”,“image”:“”,“location”:“Rajkot,Gujarat,India”,“mothertongue”:“Gujarati “,”宗教“:”印度教徒“,”职业“:”教授/讲师“,”教育“:”硕士 - 艺术/科学/商业/其他“}   ,{“match_detail_id”:396,“profile_id”:“GM780609”,“name”:“Hetal Trivedi”,“image”:“”,“location”:“Rajkot,Gujarat,India”,“mothertongue”:“Gujarati “,”宗教“:”印度教“,”职业“:”行政专业“,”教育“:”学士 - 艺术/科学/商业/其他“}   ,{“match_detail_id”:1078,“profile_id”:“GM540027”,“name”:“Shruti Dave”,“image”:“”,“location”:“Rajkot,古吉拉特邦,印度”,“mothertongue”:“古吉拉特语“,”宗教“:”印度教“,”职业“:”教育专业“,”教育“:”硕士 - 艺术/科学/商业/其他“}   ] }

我的适配器类

public class CustomAdapterSearch extends BaseAdapter{

private Context context;
private ArrayList<HashMap<String,String>> listData;
private AQuery aQuery;

private static final String TAG_NAME="name";
private static final String TAG_PROFILE="profile_id";
private static final String TAG_IMAGE="image";
private static final String TAG_CAST="cast";
private static final String TAG_AGE="age";
private static final String TAG_LOCATION="location";


public CustomAdapterSearch(Context context,ArrayList<HashMap<String,String>> listData) {
    this.context = context;
    this.listData=listData;
    aQuery = new AQuery(this.context);
}

@Override
public int getCount() {
    return listData.size();
}

@Override
public Object getItem(int position) {
    return listData.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = LayoutInflater.from(context).inflate(R.layout.list_item_searchresult,   null);
        holder.propic = (ImageView) convertView.findViewById(R.id.propicsearch);
        holder.txtproname = (TextView) convertView.findViewById(R.id.txtpronamesearch);
        holder.txtproid = (TextView) convertView.findViewById(R.id.txtproidsearch);
        holder.txtprofilecast = (TextView) convertView.findViewById(R.id.txtprofilecastsearch);
        holder.txtprofileage = (TextView) convertView.findViewById(R.id.txtprofileagesearch);
        holder.txtprofileplace = (TextView) convertView.findViewById(R.id.txtprofileplacesearch);

        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txtproname.setText(listData.get(position).get(TAG_NAME));
    holder.txtproid.setText(listData.get(position).get(TAG_PROFILE));
    holder.txtprofilecast.setText(listData.get(position).get(TAG_CAST));
    holder.txtprofileage.setText(listData.get(position).get(TAG_AGE));
    holder.txtprofileplace.setText(listData.get(position).get(TAG_LOCATION));

    aQuery.id(holder.propic).image(listData.get(position).get(TAG_IMAGE),true,true,0,R.drawable.ic_launcher);

    // image parameter : 1 : memory cache,2:file cache,3:target width,4:fallback image
    return convertView;
}
class ViewHolder{
    ImageView propic;
    TextView txtproname;
    TextView txtproid;
    TextView txtprofilecast;
    TextView txtprofileage;
    TextView txtprofileplace;
}

}

1 个答案:

答案 0 :(得分:0)

你试试这段代码吗?

public ArrayList<String> name = new ArrayList<>();
public ArrayList<String> description = new ArrayList<>();

try {
    JSONObject jsonObj = new JSONObject(jsonStr);
    JSONArray building = jsonObj.getJSONArray("data");
    for (int i = 0; i < building.length(); i++) {
        JSONObject c = building.getJSONObject(i);
        String namec = c.getString("title");
        String descriptionc = c.getString("description");
        name.add(namec);
        description.add(descriptionc);
    }
    } catch (JSONException e) {
    e.printStackTrace();
 }

 for (int i = 0; i < name.size(); i++) {
      la.add(new JSONList(name.get(i), description.get(i)));
 }
 lv.setAdapter(la);

jsonStr是你的json字符串,&#34;数据&#34;是json数组名称。

la是ListAdapter(自定义适配器),lv是ListView。

我建议使用AsyncTask将Json打印到ListView。

修改

 public ArrayList<String> user_login_id = new ArrayList<>();
 public ArrayList<String> age_from = new ArrayList<>();
DoInBackground中的

 try {
     JSONObject jsonObj = new JSONObject(json.getString(TAG_SUCCESS));
     JSONArray data = jsonObj.getJSONArray("searchresult");
     for (int i = 0; i < data.length(); i++) {
         JSONObject c = data.getJSONObject(i);
         String user_login_idc = c.getString("user_login_id");
         String age_fromc = c.getString("age_from");
         ...
         user_login_id.add(user_login_idc);
         age_from.add(age_fromc);
         ...
     }
     } catch (JSONException e) {
     e.printStackTrace();
     }

在onPostExecute

 for (int i = 0; i < age_from.size(); i++) {
      la.add(new JSONList(user_login_id.get(i), age_from.get(i) ...));
 }
 lv.setAdapter(la);

<强> 修改

所以,你可以尝试这段代码。

List.class

public class List {
Drawable Propic;
String txtproname, txtproid, txtprofilecast, txtprofileage, txtprofileplace;

public List(drawable propic, String txtproname, String txtproid, String txtprofilecast, String txtprofileage, String txtprofileplace) {
this.propic = propic;
this.txtproname = proname;
this.txtproid = proid;
this.txtprofileage = txtprofileage;
this.txtprofileplace = txtprofileplace;
}

public Drawable getpropic() { return propic;}
public String gettxtproname() { return txtproname;}
public String txtproid() { return txtproid;}
public String txtprofileage() { return txtprofileage;}
public String txtprofileplace() { return txtprofileplace;}
}

所以,您可以简单地使用适配器

final List data = this.getItem(position)
holder.txtproname.setText(data.getproname());
holder.txtproid.setText(data.gettxtproid());
holder.txtprofilecast.setText(data.gettxtprofilecast());
holder.txtprofileage.setText(data.gettxtprofileage());
holder.txtprofileplace.setText(data.gettxtprofileplace());

在onPostExecute

 for (int i = 0; i < age_from.size(); i++) {
      la.add(new List(user_login_id.get(i), age_from.get(i) ...));
 }
 lv.setAdapter(la);