PDA

View Full Version : درخواست راهنمایی درخصوص ساخت لیست ویو



amirmalakie
یک شنبه 10 خرداد 1394, 16:34 عصر
سلام من می خام اطلاعات جیسونم که از سرویس میگیرم و در تکس ویو نمایش داده میشه رو بریزم تو لیست ویو نشون بده
چکار باید بکنم
id لیست ویو هم listview هست

package com.example.jsonvolleyparse;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.VolleyLog;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import com.example.jsonvolleyparse.app.AppController;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MyActivity extends Activity {
ListView listview;

// json array response url
private String urlJsonArry = "http://api.androidhive.info/json/movies.json";
private static String TAG = MyActivity.class.getSimpleName();
private Button btnMakeObjectRequest, btnMakeArrayRequest;
// Progress dialog
private ProgressDialog pDialog;
private TextView txtResponse;
// temporary string to show the parsed response
private String jsonResponse;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


btnMakeArrayRequest = (Button) findViewById(R.id.btnArrayRequest);
txtResponse = (TextView) findViewById(R.id.txtResponse);
pDialog = new ProgressDialog(this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
btnMakeArrayRequest.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// making json array request
makeJsonArrayRequest();
}
});
}
/**
* Method to make json array request where response starts with [
* */
private void makeJsonArrayRequest() {

showpDialog();

JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());

try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < response.length(); i++) {

JSONObject person = (JSONObject) response.get(i);

String name = person.getString("title");
String image = person.getString("image");
String rating = person.getString("rating");
String releaseYear = person.getString("releaseYear");
String genre = person.getString("genre");



jsonResponse += "title: " + name + "\n\n";
jsonResponse += "image: " + image + "\n\n";
jsonResponse += "rating: " + rating + "\n\n";
jsonResponse += "releaseYear: " + releaseYear + "\n\n";
jsonResponse += "genre: " + genre + "\n\n";



}

txtResponse.setText(jsonResponse);

} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}

hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
hidepDialog();
}
});

// Adding request to request queue
AppController.getInstance().addToRequestQueue(req) ;
}

private void showpDialog() {
if (!pDialog.isShowing())
pDialog.show();
}

private void hidepDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
}

hesam67_b
یک شنبه 10 خرداد 1394, 16:41 عصر
باید یک آداپتر تعریف کنی برای لیست ویو.
اطلاعاتی که دریافت کردی رو در یک استراکتور ذخیره کن و بعدش برای نمایش بفرست به آداپتر.

کدهایی که فرستاندی ناخواناست !

amirmalakie
یک شنبه 10 خرداد 1394, 16:49 عصر
میشه بیشتر راهنمایی کنید

hesam67_b
یک شنبه 10 خرداد 1394, 17:01 عصر
یه استراکتور میسازی به این شکل
public class StructurePuzzle
{

public String name;
public String image;
public String rating;
public String releaseYear;
public String genre;

}

بعد در اکتیویتی فوق یک آرایه لیست میسازی
ArrayList<StructurePuzzle> PuzzleList = new ArrayList<StructurePuzzle>();

بعدش هم در حلقه for که تعریف کردی برای دریافت اطلاعات، این کد رو اضافه کن :

StructurePuzzle p = new StructurePuzzle();
p.name = persian.getString("title");
p.image = persian.getString("image");
...
...
PuzzleList.add(p);


و درآخر هم PuzzleList رو به آداپتر معرفی کن!

amirmalakie
یک شنبه 10 خرداد 1394, 17:12 عصر
مرسی از اینکه راهنمایی کردی
از این خط کد خطا می گیره
ArrayList<StructurePuzzle> PuzzleList = new ArrayList<StructurePuzzle>();
---------------
Error:(24, 76) java: <identifier> expected
Error:(24, 42) java: illegal character: '\ufffd'

hesam67_b
یک شنبه 10 خرداد 1394, 17:16 عصر
StructurePuzzle رو به صورت یک کلاس جدا قرار بدید.
تایپ کنید درست میشه. احتمالا به خاطر کپی کردن مستقیم از اینجاست. کاراکتر خاصی رو خطا میگیره

amirmalakie
یک شنبه 10 خرداد 1394, 17:20 عصر
مرسی واقعا اون مشکل حل شد
الان از این ارور می گیره

PuzzleList.add(p);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,PuzzleList );

----

Error:(96, 89) java: incompatible types: <anonymous com.android.volley.Response.Listener<org.json.JSONArray>> cannot be converted to android.content.Context

amirmalakie
دوشنبه 11 خرداد 1394, 15:15 عصر
دوستان میشه راهنمایی کنید

amirmalakie
سه شنبه 12 خرداد 1394, 10:07 صبح
کسی نیست یه راهنمایی کنه ما رو