Java 找不到适合ArrayAdapter的构造函数(MainListActivity.GetBlogPostStatsk,int,String[])
我在运行代码时遇到了这个错误,我在跟踪treehouse,现在我遇到了这个错误 错误:(120,52)错误:找不到适合ArrayAdapter的构造函数(MainListActivity.GetBlogPostsTask,int,String[]) 构造函数ArrayAdapter.ArrayAdapter(上下文,int,int)不适用 (参数不匹配;MainListActivity.GetBlogPostsTask无法转换为上下文) 构造函数ArrayAdapter.ArrayAdapter(上下文、int、字符串[])不适用 (参数不匹配;MainListActivity.GetBlogPostsTask无法转换为上下文) 构造函数ArrayAdapter.ArrayAdapter(上下文、int、列表)不适用 (参数不匹配;MainListActivity.GetBlogPostsTask无法转换为上下文) 现在我在这段代码中发现了错误Java 找不到适合ArrayAdapter的构造函数(MainListActivity.GetBlogPostStatsk,int,String[]),java,android,android-arrayadapter,Java,Android,Android Arrayadapter,我在运行代码时遇到了这个错误,我在跟踪treehouse,现在我遇到了这个错误 错误:(120,52)错误:找不到适合ArrayAdapter的构造函数(MainListActivity.GetBlogPostsTask,int,String[]) 构造函数ArrayAdapter.ArrayAdapter(上下文,int,int)不适用 (参数不匹配;MainListActivity.GetBlogPostsTask无法转换为上下文) 构造函数ArrayAdapter.ArrayAdapter
private void udpateList() {
if(blogData == null){
// TODO: handle error
}else{
try {
JSONArray jsonPosts = blogData.getJSONArray("posts");
blogPostTitles = new String[jsonPosts.length()];
for (int i = 0; i < jsonPosts.length(); i++){
JSONObject post = jsonPosts.getJSONObject(i);
String title = post.getString("title");
title = Html.fromHtml(title).toString();
blogPostTitles[i] = title;
}
// !!!!!!!!!! getting error here !!!!!!!!!!!!!
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, blogPostTitles);
setListAdapter(adapter);
} catch (JSONException e) {
Log.e(TAG, "Exception caught:", e);
}
}
}
private void udpateList(){
if(blogData==null){
//TODO:句柄错误
}否则{
试一试{
JSONArray jsonPosts=blogData.getJSONArray(“posts”);
blogPostTitles=新字符串[jsonPosts.length()];
for(int i=0;i
为了便于理解,我复制了整个代码,以防我遗漏了一些东西,我遵循教程,而作者在我出错时没有收到任何错误,可能是什么问题
package com.example.android.treehouseblogs;
import android.app.ListActivity;
import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainListActivity extends ListActivity {
protected String[] blogPostTitles;
public static final int NUMBER_OF_POSTS = 20;
public static final String TAG = MainListActivity.class.getSimpleName();
protected JSONObject blogData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_list);
if(isNetworkAvailable()){
GetBlogPostsTask getBlogPostsTask = new GetBlogPostsTask();
getBlogPostsTask.execute();
}else{
Toast.makeText(this, R.string.network_not_availabel,Toast.LENGTH_LONG).show();
}
}
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if(networkInfo != null && networkInfo.isConnected()){
isAvailable = true;
}
return isAvailable;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main_list, menu);
return true;
}
private class GetBlogPostsTask extends AsyncTask<Object, Void, JSONObject> {
@Override
protected JSONObject doInBackground(Object... params) {
int responseCode = 1;
JSONObject jsonResponse = null;
try {
URL blogFeedUrl = new URL("http://blog.teamtreehouse.com/api/get_recent_summary/?count=" + NUMBER_OF_POSTS);
HttpURLConnection connection = (HttpURLConnection) blogFeedUrl.openConnection();
connection.connect();
responseCode = connection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK){
InputStream inputStream = connection.getInputStream();
Reader reader = new InputStreamReader(inputStream);
int contentLength = connection.getContentLength();
char[] charArray = new char[contentLength];
reader.read(charArray);
String responseData = new String(charArray);
jsonResponse = new JSONObject(responseData);
}else{
Log.i(TAG, "Unsuccessful HTTP Response Code:" + responseCode);
}
} catch (MalformedURLException e) {
Log.e(TAG, "Exception caught:", e);
} catch (IOException e) {
Log.e(TAG, "Exception caught:", e);
} catch (Exception e) {
Log.e(TAG, "Exception caught:", e);
}
return jsonResponse;
}
@Override
protected void onPostExecute(JSONObject result) {
blogData = result;
udpateList();
}
private void udpateList() {
if(blogData == null){
// TODO: handle error
}else{
try {
JSONArray jsonPosts = blogData.getJSONArray("posts");
blogPostTitles = new String[jsonPosts.length()];
for (int i = 0; i < jsonPosts.length(); i++){
JSONObject post = jsonPosts.getJSONObject(i);
String title = post.getString("title");
title = Html.fromHtml(title).toString();
blogPostTitles[i] = title;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, blogPostTitles);
setListAdapter(adapter);
} catch (JSONException e) {
Log.e(TAG, "Exception caught:", e);
}
}
}
}
}
package com.example.android.treehouseblogs;
导入android.app.ListActivity;
导入android.content.Context;
导入android.content.res.Resources;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.AsyncTask;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.text.Html;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.ArrayAdapter;
导入android.widget.Toast;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.io.Reader;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
公共类MainListActivity扩展ListActivity{
受保护的字符串[]博客标题;
公共静态最终整数职位数量=20;
公共静态最终字符串标记=MainListActivity.class.getSimpleName();
受保护的JSONObject blogData;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u主列表);
if(isNetworkAvailable()){
GetBlogPostsTask GetBlogPostsTask=新建GetBlogPostsTask();
getBlogPostsTask.execute();
}否则{
Toast.makeText(this,R.string.network_not_available,Toast.LENGTH_LONG).show();
}
}
专用布尔值isNetworkAvailable(){
ConnectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_服务);
NetworkInfo NetworkInfo=manager.getActiveNetworkInfo();
布尔值isAvailable=false;
if(networkInfo!=null&&networkInfo.isConnected()){
isAvailable=真;
}
可获得的回报;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.menu\u主菜单,菜单);
返回true;
}
私有类GetBlogPostsTask扩展异步任务{
@凌驾
受保护的JSONObject doInBackground(对象…参数){
int-responseCode=1;
JSONObject jsonResponse=null;
试一试{
URL blogFeedUrl=新URL(“http://blog.teamtreehouse.com/api/get_recent_summary/?count=“+职位数目);
HttpURLConnection连接=(HttpURLConnection)blogFeedUrl.openConnection();
connection.connect();
responseCode=connection.getResponseCode();
if(responseCode==HttpURLConnection.HTTP\u确定){
InputStream InputStream=connection.getInputStream();
Reader Reader=新的InputStreamReader(inputStream);
int contentLength=connection.getContentLength();
char[]charArray=新字符[contentLength];
读取器.read(charArray);
字符串响应数据=新字符串(charArray);
jsonResponse=新的JSONObject(responseData);
}否则{
Log.i(标记,“不成功的HTTP响应代码:”+responseCode);
}
}捕获(格式错误){
Log.e(标记“异常捕获:”,e);
}捕获(IOE异常){
Log.e(标记“异常捕获:”,e);
}捕获(例外e){
Log.e(标记“异常捕获:”,e);
}
返回jsonResponse;
}
@凌驾
受保护的void onPostExecute(JSONObject结果){
blogData=结果;
udpateList();
}
私有无效列表(){
if(blogData==null){
//TODO:句柄错误
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainListActivity.this, android.R.layout.simple_list_item_1, blogPostTitles);
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, blogPostTitles);