Member 13111216 Ответов: 1

Переход от большого списка продуктов к меньшему списку


У меня большой список товаров для магазина. Я хочу, чтобы пользователи могли нажимать на элементы в списке, чтобы их можно было добавить в меньший список пользователей после нажатия.

Что я уже пробовал:

импорт android. os. Bundle;
импорт андроид.поддержка.В7.приложение.AppCompatActivity;
импорт android. text. Editable;
импорт android. text.TextWatcher;
импорт андроид.смотреть.Смотреть;
импорт android. widget.AdapterView;
импорт android. widget.Адаптер массива;
импорт android. widget.EditText;
импорт android. widget.элемент управления ListView;
импорт android. widget.TextView;
импорт android. widget.Тост;

импорт java.util.список ArrayList;
импорт java.util.Массивы;

импорт статических ком.пример.андроид.loginregister.Р.ИД.список;

/**
* Создано keaberry 3/8/2017.
*/

публичный класс CreateList2 расширяет реализацию AppCompatActivity
AdapterView.OnItemClickListener {
String [] items;
ArrayList< string> listItems;
ArrayAdapter<string & gt; адаптер;
Элемент ListView в ListView;
EditText editText;

protected void onCreate(Bundle savedInstanceState) {
super. onCreate(savedInstanceState);
setContentView(R. layout.activity_create_list2);
элемент ListView=(ListView с)команду findViewById(Р. ИД.элемент ListView);
полей EditText=(полей EditText)findViewById, чтобы найти(ИД Р..txtsearch);
initList();
editText. addTextChangedListener(новый TextWatcher() {
@Ручная коррекция
public void beforeTextChanged(CharSequence s, int start, int
граф, инт после) {

}


@Ручная коррекция
общественного недействительными метода ontextchanged(CharSequence оцените, начнем интервал, интервал перед, интервал посчитать) {
if (s. toString (). equals("")){
initList();
}
ещё{
searchItem(s. toString());
}
}

@Ручная коррекция
public void afterTextChanged(редактируемые s) {

}
});

}

public void searchItem(String textToSearch){
for (String item:items){
if (! item. contains(textToSearch)){
элементам списка.удалить(пункт);
}
}

адаптер.notifyDataSetChanged();

}


public void initList(){
items=new String[]{"бекон", "молоко","хлопья","замороженная пицца","спортивные напитки","сыр", "моющее средство", "чипсы", " корм для домашних животных"};
элементов listitem=новый ArrayList и Л;&ГТ;(массивов.asList(пункты));
adapter=new ArrayAdapter & lt;string> (this, R. layout. item_list, R. id.txtitem, listItems );
listView. setAdapter(адаптер);
listView. setOnItemClickListener (это);


}


@Ручная коррекция
public void onItemClick(AdapterView<? & gt; parent, View view, int position, long id) {
TextView temp=(TextView) просмотр;
Строковое значение = listView. getItemAtPosition (позиция).toString();
Toast. makeText(getApplicationContext (), Value, Toast.LENGTH_SHORT).показать();
}

Richard Deeming

Вы сказали нам, что вам нужно, и вы показали нам код, который вы написали. Но вы не сказали нам, где вы застряли, или в чем проблема с кодом, который вы написали.

1 Ответов

Рейтинг:
0

Nick_3141592654

До сих пор ваш код показывает тост только при нажатии на первый список.

У вас также есть только одно представление списка, по-видимому (R. id. listview - > listView).

Вам нужно добавить второе представление списка в макет (R. layout.activity_create_list2), добавить другую переменную класса для этого представления списка и получить этот listView2 в вашем методе onCreate.

Затем в вашем существующем обработчике onClick сделайте то, что нужно добавить в listView2. Учитывая то, что вы уже собрали вместе, я думаю, что вы должны быть в состоянии решить, как это сделать самостоятельно.

Кстати, просто чтобы упомянуть, что ваше именование переменных действительно должно следовать лучшей практике Google, в частности, нестатические частные классы vars, такие как listView, должны быть mListView. Это явно не оживит ваше приложение, но облегчит обмен кодом с другими (буква "М" в mListView читается как "мой listView").