Я пытаюсь реализовать функцию поиска в своем приложении для Android, я хочу взять то, что пользователь пишет в тексте редактирования поиска, из обнаружения активности и открыть новое действие, называемое поиском действий, в котором могут отображаться результаты, объект публикации является класс моей реализации, в котором я получаю данные из бэкэнда каждый раз, когда я пытаюсь это сделать, выдается исключение вот мой код для обнаружения активности для этой части `
search.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
// setContentView(R.layout.search_grid);
// gridView2 = (GridView) findViewById(R.id.search_grid);
RequestParams rp = new RequestParams();
final String url;
if (people.isChecked()) {
rp.add("user", search.getText().toString());
rp.add("counter", "");
url = "search_users";
} else if (tags.isChecked()) {
rp.add("tag", search.getText().toString());
rp.add("counter", "");
url = "search_exact_hashtag";
} else {
rp.add("location", search.getText().toString());
rp.add("counter", "");
url = "search_location";
}
final ArrayList<PostObject> addyExtras = new ArrayList<>();
//Toast.makeText(getApplicationContext()," something " + , Toast.LENGTH_SHORT).show();
PabloClient.post(url, rp, new JSONHandler(getApplicationContext(), new JSONHandler.OnFinishedListener() {
@Override
public void OnFinished(int statusCode, Header[] headers, JSONObject response, int result) {
try {
if (result == 1) {
// Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_SHORT).show();
JSONArray posts = response.getJSONArray("data");
setContentView(R.layout.search_grid);
//////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
for (int i = 0; i < posts.length(); i++) {
searchPosts.add(new PostObject(posts.getJSONObject(i)));
addyExtras.add(searchPosts.get(i));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
Intent intent = new Intent(ActivityDiscover.this, ActivitySearch.class);
intent.putParcelableArrayListExtra("mylist", addyExtras);
startActivity(intent);
}
}));
}
});
`
И вот как я понимаю намерение поисковой активности
searchPosts2 = getIntent().getParcelableArrayExtra("mylist");
2 ответа
Массив должен передаваться с помощью Пакет
Отправка массива
Сначала со стороны отправителя вам нужно добавить список массивов в пакет
Bundle data = new Bundle();
data.putParcelableArrayList("mylist", addyExtras);
Затем добавьте пакет в Intent
Intent intent = new Intent(ActivityDiscover.this, ActivitySearch.class);
intent .putExtra("content", data);
startActivity(yourIntent);
Получить массив
На стороне получателя получить связку из намерения
Bundle data = getIntent().getBundleExtra("content");
Затем получить список массивов из пакета
searchPosts2 = data.getParcelableArrayList("mylist");
В классе PostObject сделайте следующее ....
public class PostObject implements Parcelable
{
///......your class code
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
public PostObject(Parcel in) {
super();
// readFromParcel(in);
}
public static final Parcelable.Creator<PostObject> CREATOR = new Parcelable.Creator<PostObject>() {
public PostObject createFromParcel(Parcel in) {
return new PostObject(in);
}
public PostObject[] newArray(int size) {
return new PostObject[size];
}
};
}
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.