- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Android 应用程序中从 MySQL 查询数据并将数据作为 ArrayList 返回。然而,当我得到它的大小时,ArrayList 是空的,就在 return 语句之上。下面是到目前为止我的代码。
public List<Application> getData(final Context cntx, final long startHere, String url) {
final List<Application> apps = new ArrayList<Application>();
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("startHere", startHere);
client.post(url,
params, new AsyncHttpResponseHandler() {
@Override
public void onFailure(int a0, Header[] a1, byte[] a2, Throwable a3) {
Toast.makeText(cntx,"Some Err", Toast.LENGTH_LONG).show();
}
@Override
public void onSuccess(int statusCode, Header[] header,
byte[] response) {
String s = new String(response);
try {
JSONArray aJson = new JSONArray(s);
for(int i=0; i<aJson.length(); i++) {
JSONObject json = aJson.getJSONObject(i);
Application app = new Application();
app.setTitle(json.getString("app_title"));
app.setIcon(json.getString("icon"));
// works here as expected, returns values > 0
Log.i("Debug 1", apps.size()+"");
apps.add(app);
}
Toast.makeText(cntx, apps.size()+"", Toast.LENGTH_LONG).show();
} catch (JSONException e) {
Toast.makeText(cntx, "Invalid JSON", Toast.LENGTH_LONG).show();
}
}
});
//Does not work at this point, returns a value of 0!
Log.i("Debug 2", apps.size()+"");
return apps;
}
最佳答案
试试这个:
public class HomeFragment extends Fragment {
private ListView mListView;
private ListViewNewsAdapter listViewNewsAdapter;
private ArrayList<ListViewNewsItem> listViewNewsItems;
private ImageView Right ;
private ImageView Left ;
private String NewsBody[] ;
private TimerTask mTimerTask;
private Timer timer = new Timer();
private boolean Switch = true ;
private final Handler timerHandler = new Handler();
private JSONParser jsonParser = new JSONParser();
private String READNEWS_URL =
"YOUR WEBSITE";
public HomeFragment() {
// Required empty public constructor
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
mListView = (ListView) rootView.findViewById(R.id.mlv);
Right = (ImageView) rootView.findViewById(R.id.adv_right) ;
Left = (ImageView) rootView.findViewById(R.id.adv_left) ;
Animation LeftSideAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.blink);
Right.startAnimation(LeftSideAnimation);
Left.startAnimation(LeftSideAnimation);
Left.setBackground(getResources().getDrawable(R.drawable.facebook_icon));
Right.setBackground(getResources().getDrawable(R.drawable.home_icon));
new GetNewsTask().execute();
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Show_News_Body Show_News_Body = new Show_News_Body(getActivity(), NewsBody[position]);
Show_News_Body.show();
}
});
return rootView;
}
private class GetNewsTask extends AsyncTask<Void, Void, Boolean>
{
private ProgressDialog mProgressDialog;
private JSONObject jsonObjectResult = null;
private String error;
@Override
protected void onPreExecute()
{
super.onPreExecute();
listViewNewsItems = new ArrayList<ListViewNewsItem>();
mProgressDialog = ProgressDialog.show(getActivity(),
"Processing...", "Get last news", false, false);
}
@Override
protected Boolean doInBackground(Void... params)
{
jsonObjectResult = jsonParser.makeHttpRequest(READNEWS_URL, null);
if (jsonObjectResult == null)
{
error = "Error in the connection";
return false;
}
try
{
if (jsonObjectResult.getInt("success") == 1)
{
JSONArray jsonArray = jsonObjectResult.getJSONArray("posts");
NewsBody = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++)
{
JSONObject news = jsonArray.getJSONObject(i);
ListViewNewsItem listViewNewsItem = new ListViewNewsItem
(
news.getString("title"),
news.getString("type"),
news.getString("image_link"),
news.getString("news_body")
);
listViewNewsItems.add(listViewNewsItem);
NewsBody[i]= listViewNewsItem.getNews_body();
}
return true;
}
else
error = jsonObjectResult.getString("message");
}
catch (Exception ex)
{
}
return false;
}
@Override
protected void onPostExecute(Boolean aBoolean)
{
super.onPostExecute(aBoolean);
mProgressDialog.dismiss();
if (aBoolean)
{
listViewNewsAdapter = new ListViewNewsAdapter(getActivity(),
listViewNewsItems);
mListView.setAdapter(listViewNewsAdapter);
}
else
Toast.makeText(getActivity(), error, Toast.LENGTH_LONG).show();
}
}
}
这是我的布局包含一个像这样的 ListView :
<ListView
android:layout_marginTop="2dp"
android:layout_below="@+id/line_adv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background = "@android:color/transparent"
android:padding="3dp"
android:dividerHeight="1dp"
android:id="@+id/mlv"></ListView>
还有另外两个类:
public class ListViewNewsAdapter extends ArrayAdapter<ListViewNewsItem> {
private Context mContext;
private ArrayList<ListViewNewsItem> mData;
public ListViewNewsAdapter (Context mContext, ArrayList<ListViewNewsItem> mData) {
super(mContext, R.layout.data_shape, mData);
this.mContext = mContext;
this.mData = mData;
}
@Override
public int getCount() {
return mData.size();
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
LayoutInflater mInflater = (LayoutInflater)
mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.data_shape, null);
}
TextView m_title = (TextView) convertView.findViewById(R.id.m_title);
m_title.setText(mData.get(position).getM_title());
TextView m_type = (TextView) convertView.findViewById(R.id.m_type);
m_type.setText(mData.get(position).getM_type());
UrlImageViewHelper.setUrlDrawable((ImageView) convertView.findViewById(R.id.NewsImage),
mData.get(position).getImage_link()
, R.drawable.ic_launcher, 60000);
return convertView;
}
还有这个:
public class ListViewNewsItem {
private String m_title ;
private String m_type;
private String image_link ;
private String news_body ;
public ListViewNewsItem( String m_title, String m_type,String image_link, String news_body ) {
this.m_title = m_title;
this.m_type = m_type ;
this.image_link = image_link ;
this.news_body = news_body ;
}
public String getNews_body() {
return news_body;
}
public void setNews_body(String news_body) {
this.news_body = news_body;
}
public String getImage_link() {
return image_link;
}
public void setImage_link(String image_link) {
this.image_link = image_link;
}
public void setM_title(String m_title) {
this.m_title = m_title;
}
public String getM_title() {
return m_title;
}
public void setM_type(String m_type) {
this.m_type = m_type;
}
public String getM_type() {
return m_type;
}
}
Data_Shape 布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_margin="5dp"
android:paddingTop="10dp"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:layout_margin="5dp"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:text="The Title Is Here"
android:textDirection="rtl"
android:textColor="#173966"
android:textSize="15dp"
android:id="@+id/m_title"/>
<TextView
android:layout_height="wrap_content"
android:id="@+id/m_type"
android:layout_marginLeft="5dp"
android:textSize="10dp"
android:layout_width="match_parent"
android:text="HERE IS THE TEXT"
android:textColor="@android:color/black"/>
</LinearLayout>
<ImageView
android:layout_width="70dp"
android:layout_height="70dp"
android:id="@+id/NewsImage"/>
</LinearLayout>
</LinearLayout>
请注意,您的 MYSQL 表应包含以下列:标题、类型、图像链接和正文。
关于java - Android 异步 Http 响应处理程序中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30980241/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!