import java.util.HashMap;
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.type.TypeFactory;
import org.codehaus.jackson.type.JavaType;
import com.leighyu.utils.Constants;
public class AsyncGetProductCategories<T> implements Runnable {
private final Class<T> type;
public interface OnFinishListener<T> {
public void onFinish(List<T> t);
}
private OnFinishListener<T> onFinishListener;
public void setFinishListener(OnFinishListener<T> onFinishListener) {
this.onFinishListener = onFinishListener;
}
private String url;
private HashMap<String, String> params;
public AsyncGetProductCategories(Class<T> type) {
this.type = type;
this.url = Constants.URL + "productcategorylist/getalllevelone.html";
HashMap<String, String> params = new HashMap<String, String>();
params.put("testkey", "testvalue");
this.params = params;
}
@Override
public void run() {
try {
String result = WebUtil.httpPostJson(this.url, this.params);
ObjectMapper mapper = new ObjectMapper();
JavaType listType = TypeFactory.collectionType(List.class, type);
List<T> entities = mapper.readValue(result, listType);
if(onFinishListener != null) {
onFinishListener.onFinish(entities);
}
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
AsyncGetProductCategories<ProductCategoryEntity> agpc =
new AsyncGetProductCategories<ProductCategoryEntity>(ProductCategoryEntity.class);
agpc.setFinishListener(new OnFinishListener<ProductCategoryEntity>(){
@Override
public void onFinish(final List<ProductCategoryEntity> entities) {
activity.runOnUiThread(new Runnable()
{
@Override
public void run() {
drawLevelOne(entities);
mProgressDialog.dismiss();
}
});
}
});
new Thread(agpc).start();