Возможно ли вернуть peepWithPics после отправки его в мой XMLPullParserHandler, чтобы я мог вызвать его onCreate и установить его в адаптер listView. Я не уверен, как передать его любому другому методу или классу для нас. Вызов listViewAdapter работает в этом методе, но я не могу заставить setOnItemClickLIstener работать так, чтобы думать, могу ли я создать адаптер в onCreate, а затем setOnItemCLickLister, должен помочь мне со мной двигаться вперед с моей разработкой.return response to use onCreate и почему enqueue не выполняется асинхронно
Также с OkHttp3 я читал, что выполнение вызова с помощью enqueue делало это асинхронно, но я получаю сообщение об ошибке.
android.view.ViewRootImpl $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представлений, может коснуться его представлений. Эта ошибка в строке кода
listView.setAdapter(adapter);
Весь метод состоит в
public void getXMLData() {
OkHttpClient client = getUnsafeOkHttpClient();
Request request = new Request.Builder()
.url(myURL)
.build();
client.newCall(request).enqueue(new Callback() {
// android.os.Handler mainHanlder = new android.os.Handler(context.getMainLooper());
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String responseData = response.body().string();
final InputStream stream = new ByteArrayInputStream(responseData.getBytes());
/*mainHanlder.post(new Runnable() {
@Override
public void run() {*/
ArrayList<PeepWithPic> peepWithPics;
XMLPullParserHandler parserHandler = new XMLPullParserHandler();
peepWithPics = (ArrayList<PeepWithPic>) parserHandler.parse(stream);
/*ListViewAdapter adapter = new ListViewAdapter(getApplicationContext(), peepWithPics);
listView.setAdapter(adapter);
listView.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);*/
/*}
});*/
}
});
}
Я попытался добавить после mProgressBar установлен Унесенные.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getApplicationContext(), "WORKS FROM RUNONUI", Toast.LENGTH_LONG).show();
}
Я также попытался же setOnItemClickListener в OnCreate метод
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
context = getApplicationContext();
listView = (ListView) findViewById(R.id.contactListView);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mProgressBar.setVisibility(View.VISIBLE);
getXMLData();
}
Метод getXMLData вызывается в OnCreate
Возможный дубликат [обратных вызовов ответа Okhttp в основной теме] (http://stackoverflow.com/questions/24246783/okhttp-response-callbacks-on-the-main-thread) –
Когда я пытаюсь выполнить любое из этих предложений из этого сообщения setOnItemClickListeners не работают при вызове из нового Runnable, runOnUI или onCreate. Я все еще не вижу, как передать peepWihtPics в onCreate, поэтому я могу попробовать и установить listView и адаптер там, а не на том, что runnable в onResponse –
вы можете обновить свой вопрос тем, что вы пробовали, а также где ваш вызов getXMLData() ? –