我知道這可能聽起來像一個重複的問題,但我已經嘗試過所有的解決方案沒有works.It顯示錯誤「無法解析構造函數ArrayAdapter」我有Mainview中的listview我已經通過到第二個活動,我正在搜索遠程數據庫並在列表視圖中顯示結果。 乘坐look..Thank你.. 這是mainactivity:無法解析構造函數在AsyncTask中的onPostExecute
public class Main2Activity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private EditText location;
private TextView result ;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
location = (EditText)findViewById(R.id.editText1);
result = (TextView)findViewById(R.id.textView4);
lv = (ListView) findViewById(R.id.lv);
}
public void search(View view){
String slocation = location.getText().toString();
new SearchActivity(this,lv,1).execute(slocation);
}
SearchActivity
public class SearchActivity extends AsyncTask<String,Void,String[]>{
private Context context;
private int byGetOrPost = 0;
private TextView sresult;
ListView lv1;
JSONArray garages;
String[] names;
public SearchActivity(Context context,ListView lv1,int flag) {
this.context = context;
byGetOrPost = flag;
this.lv1 = lv1;
}
protected void onPreExecute(){
}
@Override
protected String[] doInBackground(String... arg0) {
try{
String location = (String)arg0[0];
String link="http://garagekhojo.in/androidtest.php";
String data = URLEncoder.encode("location", "UTF-8") + "=" + URLEncoder.encode(location, "UTF-8");
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
break;
}
String newsb = sb.toString();
JSONObject jo = new JSONObject(newsb) ;
garages = jo.getJSONArray("garages");
for (int i = 0; i < garages.length(); i++) {
JSONObject c = garages.getJSONObject(i);
names[i] = c.getString("name");
}
return names;
}
catch(Exception e){
return null;
}
}
@Override
protected void onPostExecute(String[] names){
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this, R.layout.class,names);
lv1.setAdapter(adapter);
}
}
試試這可能會幫助你使用上下文而不是這個。 adapter = new ArrayAdapter(context,R.layout.class,names); –
Nowshad
也請發佈您的ArrayAdapter類代碼。 – Nowshad
@Nowshad ArrayAdapter是android中的預定義類。 –