Я знаю, что это очень простой вопрос, но я новичок в разработке Android, поэтому, пожалуйста, успокойся.
Проблема, которая у меня есть, находится в одном из фрагментов (специально для AsyncTask), который лежит в моей основной деятельности. AsyncTask отправляет данные в php-скрипт, который затем возвращает данные в формате json. Затем он обрабатывается и сохраняется в массиве jsonlist
. До тех пор, пока почта не выполнит все работает, мелкие данные загружаются, обрабатываются и т. Д. Однако, когда программа достигает сообщений, проблемы запуска начинают выходить. И в принципе я не в состоянии перечислить все данные из jsonlist
в ListViewКак заполнить ListView с помощью адаптеров
//setting up an array
ArrayList<HashMap<String, String>> jsonlist = new ArrayList<HashMap<String, String>>();
//creating list view variable
ListView listview;
//Define work in progress dialog
private ProgressDialog mProgressDialog;
private class ProgressTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(getActivity());
// Set progressdialog title
mProgressDialog.setTitle("Please wait");
// Set progressdialog message
mProgressDialog.setMessage("Fetching data...");
mProgressDialog.setIndeterminate(false);
}
@Override
protected Boolean doInBackground(String... params) {
//To do in the background
//Define variable of JSON parser type
JSONParser jParser = new JSONParser();
//Pass url to json parser class to fetch and save it into array variable
JSONArray json = jParser.getJSONFromUrl(url);
//loop from 0 to length of an array by increasing by 1
for (int i = 0; i < json.length(); i++) {
//Try and catch routine to prevent any crashes
try {
//Get an object defined in { ... } in original json file
JSONObject c = json.getJSONObject(i);
//Separate object by obtaining values for each of the sections
String vtitle = c.getString(title);
String vcontent = c.getString(content);
String vuser = c.getString(user);
HashMap<String, String> map = new HashMap<String, String>();
//Fill up an array with data extracted
map.put(title, vtitle);
map.put(content, vcontent);
map.put(user, vuser);
//Add values into jsonlist
jsonlist.add(map);
} catch (JSONException e)
{
//In case of any error Stack trace will be returned
e.printStackTrace();
}
}
//Once everything has been done return null value
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
//Insert all data downloaded through list adapter
ListAdapter adapter = new SimpleAdapter(getActivity(), jsonlist, R.layout.list_activity, new String[] { title, content, user }, new int[] { R.id.title, R.id.content, R.id.user });
// Locate the listview
//listview = (ListView) findViewById(R.id.list);
// Set the adapter to the ListView
//listview.setAdapter(adapter);
//Get rid off dialog when operation of fetching data has been done
if (mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
}
}
}
Как вы можете видеть, я попробовал комментируемой код, но listview = (ListView) findViewById(R.id.list);
возвращает следующую ошибку:
Cannot resolve method findViewById(int)
, которая мешает мне выполнение программы. Это очень расстраивает, потому что у меня буквально есть все данные, которые мне нужны в массиве, но только одна строка кода мешает мне отображать ее.
Я также попытался:
ListAdapter adapter = new SimpleAdapter(context, jsonlist, R.layout.list_activity, new String[] { title, content, user }, new int[] { R.id.title, R.id.content, R.id.user });
setListAdapter(adapter);
lv = getListView();
Но, как и в предыдущем случае ошибки неразрешенных метода возвращается. Что связано с тем, что фрагмент продлен фрагмента и добавив ничего он выходит из строя он
public class Fragment2 extends Fragment, ListActivity {...}
Спасибо! Он работал так, как я этого хотел. – 5m0k3