私有ListView ListViewGoogle;
private String[] resultArray;
private EditText searchBox;
private Button searchBtn;
private String search_url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
private String search_query;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
listViewGoogle = (ListView)findViewById(R.id.listviewgoogle);
searchBox = (EditText)findViewById(R.id.searchBox);
searchBtn = (Button)findViewById(R.id.searchBtn);
searchBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new JsonSearchTask().execute();
try
{
search_query = search_url + searchBox.getText().toString();
new JsonSearchTask().execute();
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listviewgoogle, resultArray);
listViewGoogle.setAdapter(adapter);
}
catch (Exception e)
{
// TODO: handle exception
}
}
});
}
private class JsonSearchTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... arg0)
{
try
{
parseResult(sendQuery(search_query));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
private String sendQuery(String query) throws IOException
{
String queryResult = "";
URL searchURL = new URL(query);
HttpURLConnection httpURLConnection = (HttpURLConnection) searchURL.openConnection();
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
{
InputStreamReader inputStreamReader = new InputStreamReader(httpURLConnection.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader, 8192);
String line = null;
while ((line = bufferedReader.readLine()) != null)
{
queryResult += line;
}
bufferedReader.close();
}
return queryResult;
}
private void parseResult(String json) throws JSONException
{
String parsedResult = "";
JSONObject jsonObject = new JSONObject(json);
JSONObject jsonObject_responseData = jsonObject.getJSONObject("responseData");
JSONArray jsonArray_results = jsonObject_responseData.getJSONArray("results");
resultArray = new String[jsonArray_results.length()];
for(int i = 0; i < jsonArray_results.length(); i++)
{
JSONObject jsonObject_i = jsonArray_results.getJSONObject(i);
parsedResult = "title: " + jsonObject_i.getString("title") + "\n";
parsedResult += "url: " + jsonObject_i.getString("url") + "\n";
//parsedResult += "\n";
resultArray[i] = parsedResult;
}
}
activity_listviewgoogle.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold"
android:gravity="center" >
</TextView>
activity_my.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/parentOuter" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:hint="type to search..."
android:layout_weight="2"
android:id="@+id/searchBox" />
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Search Me!"
android:layout_weight="2"
android:id="@+id/searchBtn" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listviewgoogle"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
你做错了。您调用了AsyncTsk并设置了适配器,如下所示:
new JsonSearchTask().execute();
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listviewgoogle, resultArray);
listViewGoogle.setAdapter(adapter);
JSONSearchTask
在seperate线程中运行,而ListViewGoogle.setAdapter(适配器);
在获得JSONSearchTask
的结果之前在主线程中调用。因此,必须在JSONSearchTask
的onPostExecute()
方法中调用此方法。
错误:
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listviewgoogle, resultArray);
在您的SetonClickListener中。因此,在这个
引用OnClickListener的上下文引用,而不是活动的引用。
所以试试
ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.activity_listviewgoogle, resultArray);
而不是
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listviewgoogle, resultArray);
我有一个要填充信息的对象。我从许多不同的服务中检索信息。我做了一个助手类,它有一个公共方法,然后有许多私有方法来调用服务。我写的东西很好,但我不确定这是否是正确的方法。 您可能想知道为什么我需要一个包含所有这些信息的对象。我需要它全部在一个对象中,因为我从这个java对象创建了一个json对象并将其传递给javascript层。 我的方法有什么问题?我是否应该遵循一种编程范式来做这样的事情? 例子
所以我用Java处理这些数据: 我需要将其转换为JSON: 但是我不知道怎么做。 目前我认为这是最好的方法: 但我不确定如何使用Hashmap实现这一点。我知道是这样的: 但确切的语法,以及如何将其与其他数据一起添加,我无法计算。有什么想法吗?
问题内容: 我使用Json.Net这样填充一个类: 上面的结果JSON字符串填充了我的类中的几个属性。稍后我有一个新的JSON字符串,并希望使用其余属性填充相同的类。是否可以使用JSON.NET或方法?我基本上想在上面的代码行中添加/添加到我填充的帐户对象中。 我的课: 问题答案: 是的,您可以使用第二个JSON字符串来填充现有对象的属性。 这是一个例子: 输出: 小提琴:https : //do
问题内容: 我设法用json对象填充下拉菜单,效果很好。目前,我正在尝试根据从下拉菜单中选择的选项显示隐藏div中的图像。当下拉列表由json对象填充时,我将如何检索图像数据。 HTML JSON文件 这就是我使用jquery填充下拉菜单的方式。 jfiddle中任何有效的示例,将不胜感激!谢谢。 问题答案: 现场演示
问题内容: 希望有人可以帮助我编写SQL脚本或函数。 我有一个数据源,我希望该功能通过并基于2个指定的列填充相关列。 因此,名称和值列。 例如 因此,脚本/函数应该为数据源的每一行分别在a,b,c,d列中填充值2,1、3、5。 这可能吗?如果是这样,有人可以教我如何做。 问题答案: Oracle安装程序 : 更新声明 : 输出 : Oracle安装程序 : 插入语句 : 输出 :
问题内容: 我有一个JSON请求,该请求从youtube返回一个响应,其中包含对特定视频的评论。我目前有3种文本视图:一种用于名称/上载器,一种用于内容,一种用于发布日期- 然后用我的JSON响应中的数据填充。 我的问题是-仅出现第一个评论,发布日期和上传者。 我相信我将需要用列表视图替换我的textviews并将其解析为3个字段-我只是不知道如何。 爪哇 公共类Player扩展了YouTubeB