Issue
I have question regardin async http call in my custom listview. How do i call async call in my following custom Listview and parse json to fill the Listview . My Custom Listview is contain from images and text.
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ListActivity;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
public class ListActivityS extends ListActivity
{
private GetHttpCall getCall;
String item[];
int id[];
ArrayList<Video> videos;
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
super.onCreate(savedInstanceState);
//Crearte instance to http call
getCall=new GetHttpCall();
String response=null;
try {
response=getCall.connect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONParser _parser=new JSONParser();
_parser.parseHttpJson(response);
item = JSONParser.num_title;
id=JSONParser.num_id;
videos=new ArrayList<Video>();
for(int i=0;i<item.length;i++)
{
Video vid=new Video();
vid.setTitle(item[i]);
vid.setId(id[i]);
videos.add(vid);
}
getListView().setDividerHeight(2);
getListView().setAdapter(new BindDataAdapter(this, videos));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Builder builder = new AlertDialog.Builder(this);
builder.setMessage(item[position] + " is clicked.");
builder.setPositiveButton("OK", null);
builder.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_list, menu);
return true;
}
}
Solution
Call new AsyncAction().execute(null, null, null);
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Builder builder = new AlertDialog.Builder(this);
builder.setMessage(item[position] + " is clicked.");
builder.setPositiveButton("OK", null);
builder.show();
}
private class AsyncAction extends AsyncTask<String, Void, String> {
public boolean status = false;
private ProgressDialog pd;
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
try {
status = true;
//Crearte instance to http call
getCall=new GetHttpCall();
String response=null;
try {
response=getCall.connect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONParser _parser=new JSONParser();
_parser.parseHttpJson(response);
item = JSONParser.num_title;
id=JSONParser.num_id;
videos=new ArrayList<Video>();
for(int i=0;i<item.length;i++)
{
Video vid=new Video();
vid.setTitle(item[i]);
vid.setId(id[i]);
videos.add(vid);
}
getListView().setDividerHeight(2);
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
@Override
protected void onPostExecute(String result) {
pd.dismiss();
getListView().setAdapter(new BindDataAdapter(this, videos));
}
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
pd = new ProgressDialog(listmessages.this);
pd.setMessage("loading...");
pd.setIndeterminate(true);
pd.setCancelable(false);
pd.show();
}
}
}
}
Answered By - Nirav Ranpara
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.