2014-12-20 5 views
0

volley.i와 함께 내 listview에로드 된 데이터를 json 데이터가 아닌 활동을 통해 이미지와 텍스트를 전달하는 방법을 전달하려고합니다. 중복 된 질문 일 수는 있지만 도움이되지 않았습니다. 다른 응답들.json 데이터를 액티비티간에 발리를 사용하여 다운로드

intent.putExtra("json",jsonobj.toString());

내 두 번째에 :

public class Movies extends ActionBarActivity{ 
 
\t // Log tag 
 
    private static final String TAG = MainActivity.class.getSimpleName(); 
 
    
 
    // Movies json url 
 
    private static final String url = "http://api.androidhive.info/json/movies.json"; 
 
    private ProgressDialog pDialog; 
 
    private List<Movie> movieList = new ArrayList<Movie>(); 
 
    private ListView listView; 
 
    private CustomListAdapter adapter; 
 
\t @Override 
 
\t public void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.event); 
 
\t 
 
    \t getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
 

 
\t Intent newActivity2=new Intent(); 
 
\t setResult(RESULT_OK, newActivity2); 
 
    
 
\t listView = (ListView) findViewById(R.id.list); 
 
    adapter = new CustomListAdapter(this, movieList); 
 
    listView.setAdapter(adapter); 
 

 
    pDialog = new ProgressDialog(this); 
 
    // Showing progress dialog before making http request 
 
    pDialog.setMessage("Loading..."); 
 
    pDialog.show(); 
 

 
    // changing action bar color 
 
    getActionBar().setBackgroundDrawable(
 
      new ColorDrawable(Color.parseColor("#1b1b1b"))); 
 

 
    // Creating volley request obj 
 
    JsonArrayRequest movieReq = new JsonArrayRequest(url, 
 
      new Response.Listener<JSONArray>() { 
 
       @Override 
 
       public void onResponse(JSONArray response) { 
 
        Log.d(TAG, response.toString()); 
 
        hidePDialog(); 
 

 
        // Parsing json 
 
        for (int i = 0; i < response.length(); i++) { 
 
         try { 
 

 
          JSONObject obj = response.getJSONObject(i); 
 
          Movie movie = new Movie(); 
 
          movie.setTitle(obj.getString("title")); 
 
          movie.setThumbnailUrl(obj.getString("image")); 
 
          movie.setRating(((Number) obj.get("rating")) 
 
            .doubleValue()); 
 
          movie.setYear(obj.getInt("releaseYear")); 
 

 
          // Genre is json array 
 
          JSONArray genreArry = obj.getJSONArray("genre"); 
 
          ArrayList<String> genre = new ArrayList<String>(); 
 
          for (int j = 0; j < genreArry.length(); j++) { 
 
           genre.add((String) genreArry.get(j)); 
 
          } 
 
          movie.setGenre(genre); 
 

 
          // adding movie to movies array 
 
          movieList.add(movie); 
 

 
         } catch (JSONException e) { 
 
          e.printStackTrace(); 
 
         } 
 

 
        } 
 

 
        // notifying list adapter about data changes 
 
        // so that it renders the list view with updated data 
 
        adapter.notifyDataSetChanged(); 
 
       } 
 
      }, new Response.ErrorListener() { 
 
       @Override 
 
       public void onErrorResponse(VolleyError error) { 
 
       \t if (error instanceof NoConnectionError){ 
 
        \t Toast.makeText(getBaseContext(), "Bummer..There's No Internet connection!", Toast.LENGTH_LONG).show(); 
 

 
       }}; 
 
      }); 
 

 
    // Adding request to request queue 
 
ParseApplication.getInstance().addToRequestQueue(movieReq); 
 
} 
 

 
@Override 
 
public void onDestroy() { 
 
    super.onDestroy(); 
 
    hidePDialog(); 
 
} 
 

 
private void hidePDialog() { 
 
    if (pDialog != null) { 
 
     pDialog.dismiss(); 
 
     pDialog = null; 
 
    } 
 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 
 

 
    \t @Override 
 
    \t public void onItemClick(AdapterView<?> parent, View view, 
 
    \t       int position, long id) { 
 
    \t \t 
 
    \t \t Intent intent = new Intent(Movies.this, Detail.class);  
 
    \t  startActivity(intent); 
 
    \t } 
 
    \t });} 
 

 
@Override 
 
public boolean onCreateOptionsMenu(Menu menu) { 
 
    // Inflate the menu; this adds items to the action bar if it is present. 
 
    getMenuInflater().inflate(R.menu.main, menu); 
 
    return true; 
 
} 
 

 

 

 
    } 
 

나는 PARAM 전달이 코드를 구현하는 하죠 : 다음 내 활동 코드 활동;

JSONObject obj=new JSONObject(getIntent().getStringExtra("json")
하지만 난 내 자신의 활동에 도움이 code.please에서와 "JSON", jsonobj.toString을() 무엇을 교체하세요니까. 나타나서는 당신에게에게 사전에

덕분에

+0

여기에는 두 가지 옵션이 있습니다. 1) 그대로 json을 전달하고 (즉 : 문자열로) 수신 측에서 다시 구문 분석합니다 (두 번째 활동). 2)'Movie 클래스'를'Parcelable' (또는'Serializable')로 만들고, 자바 객체로 두 번째 액티비티로 전달합니다. 그건 그렇고,'jsonobj.toString()'에 해당하는 것은 당신의 경우'obj.toString()'이 될 것입니다. –

+0

@ MH.json에 첫 번째 옵션을 달았습니다.하지만 json을 부 풀릴 수는 있지만, obj에 오류 표시가 나타납니다. 해결할 수 없습니다. 문제가 있습니까? 코드가 누락 되었습니까? –

+0

당신은'onResponse()'메소드에서 json 문자열을 얻습니다, 그래서 당신이 그것에 매달 리고 싶다면, 나중에 그것을 액세스 할 수있는 멤버 변수에 할당해야합니다. '의도'). –

답변

0

내가 그것을 알아낼 수 있었다과 title.The의 이미지가 여전히 여긴 우리처럼 붙어 있었다 사람을 돕기 위해이 일을 underway.I'm 나타나서입니다 통과를 줄 것이다 실마리. 온 클릭()

String name = ((TextView) view.findViewById(R.id.title)) 
       .getText().toString(); 

     Intent intent = new Intent(Movies.this, Detail.class);  
     intent.putExtra(Title, name); 
     startActivity(intent); 

에이어서

\t private static String Title="title";

및 제 액티비티 그것을 같은 검색 :에서 onCreate() 이전이 삽입

Intent i=getIntent(); 
String name = i.getStringExtra(Title); 

TextView lblName = (TextView) findViewById(R.id.name_label); 

lblName.setText(name);} 

다음을 배치 한 후 foreCreate() :

private static String Title="title"; 

모든 도움에 감사드립니다.

관련 문제