I have JSON data which contents Strings and Image URLs, and I already parse it in the first Activity. How can I display it like the address book in my customized Listview in second Activity Should I customize an Adapter?
If that’s the solution, what should I do?
I’m not familiar with Adapter.
Here’s the code from the first Activity:
public class BBtest05Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
executeHttpGet();
} catch (Exception e) {
Log.i("bird","parser failure");
e.printStackTrace();
}
}
String aStr = new String();
String aStrArray[] = new String[2048];
public void executeHttpGet() throws Exception {
try {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://test.mobibon.com.tw/MovieGoTest/GetMovies.js");
HttpResponse response = client.execute(request);
String retSrc = EntityUtils.toString(response.getEntity(),"utf-8");
//there's a space in the head...
retSrc = retSrc.substring(1);
JSONObject obj = new JSONObject(retSrc);
JSONArray movieArray = obj.getJSONArray("movies");
for(int i = 0;i < movieArray.length(); i++)
{
JSONObject movie_data = movieArray.getJSONObject(i);
aStr = aStr+","+movie_data.getString("cTitle");
}
} finally {
aStrArray = aStr.split(",");
ListView list = (ListView) findViewById(R.id.linearLayout1);
list.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, aStrArray));
list.setTextFilterEnabled(true);
}
}
public void aMethod(View theButton) {
Intent i = new Intent(this,nowamovie.class);
startActivity(i);
}
}
the aMethod is changing Activity method…
and the following code is my XML file in second Activity…
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="fill_parent"
android:orientation="vertical" android:background="@drawable/pic_background">
<LinearLayout android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/linearLayout1" >
<ImageView android:layout_height="wrap_content"
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:src="@drawable/ic_launcher"></ImageView>
<TextView android:text="TextView"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:textAppearance="?android:attr/textAppearanceLarge">
</TextView>
</LinearLayout>
<LinearLayout android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/linearLayout1"
android:orientation="horizontal">
<TextView android:id="@+id/textView2"
android:text="TextView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall">
</TextView>
<TextView android:text="TextView" android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_marginLeft="6dip">
</TextView>
</LinearLayout>
What should I do to put my data from JSON parser into this Activity?
Yes you need to customize your adapter and loading of images should be lazy, search on google for Lazy Implementation of images in list, and you would get enough material on this. In 3.0 there is a new feature introduced which is Loader, which do this lazy loading work for you.