2014-12-09 4 views
0

Я создаю приложение, в своей деятельности я использовал getIntent.getstringExtra («строка»), эта строка содержит ответ json, в этом ответе у меня есть разные поля, которые мне нужно отображать в виде списка, поэтому как это сделатьКак отображать данные о намерениях в списке?

проверить этот вопрос 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); 

}} 

мой nextactivity

@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); 

{ "SearchResult": [{ "match_detail_id": 369, "profile_id": "GM686317", "имя": "Сонал похлопывание el "," image ":" "," location ":" Rajkot, Gujarat, India "," mothertongue ":" Gujarati "," религия ":" индуистская "," профессия ":" профессор/преподаватель "," образование «:« Магистратура - искусство/наука/торговля/другие »} , {" match_detail_id ": 396," profile_id ":" GM780609 "," name ":" Hetal Trivedi "," image ":" "," location " : «Раджкот, Гуджарат, Индия», «родной язык»: «Гуджарати», «религия»: «индус», «оккупация»: «административный профессионал», «образование»: «бакалавры - искусство/наука/торговля/другие»} , {"match_detail_id": 1078, "profile_id": "GM540027", "name": "Shruti Dave", "image": "", "location": "Rajkot, Gujarat, India", "mothertongue": " гуджаратский», "религия": "Hindu", "оккупация": "Образование Профессионал", "образование": "Masters - Искусство/Наука/Торговля/Другое"} ] }

моего адаптер класс

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; 
} 

}

+0

я предлагаю не отправлять данные в формате JSON через намерение. Потому что, если длина json слишком велика, это не сработает. Возможно, вы получите ошибку javaBinder. – Amsheer

+0

поэтому дайте решение –

+0

Перед передачей данных с использованием намерения просто проанализируйте данные json и добавьте в bean-компонент. Это просто проанализировать данные и добавить в список просто вызов из любого места, где бы вы ни хотели – Amsheer

ответ

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, «data» - имя массива json.

la is 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); 

редактировать:

поэтому, вы можете попробовать этот код.

Список.Класс

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); 
+0

Вы следовали за вопросом, который я упоминаю в моем текущем вопросе? –

+0

Вы имели в виду «распечатать json в listview»? Если это так, вы можете использовать json String для JSONObject (JSONObject jsonObj = new JSONObject (jsonStr);) и преобразовать JSONObject в JSONArray (JSONArray building = jsonObj.getJSONArray ("searchresult");) – WindSekirun

+0

Я редактирую свой вопрос здесь, вы можете редактировать свои предложение? –