#java #android #arraylist #android-listview
#java #Android #arraylist #android-listview
Вопрос:
У меня есть два listviews, родительский listview с эссе элемента, который содержит дочерний listview с «заголовком эссе 20». Когда заголовок эссе щелкнул по нему, открывается действие, имеющее текстовое представление для отображения текста. Я не хочу делать 20 действий для 20 эссе каждое. есть ли какой-либо способ, когда я открываю любой дочерний элемент, он показывает только указанные данные для этого только для этого дочернего элемента. вот пример фотографий
Родительский список и открытое описательное эссе
[https://drive.google.com/file/d/1QksjP7hzpqmVCk_Y1ctwsDMYkijDHQPt/view?usp=sharing ][1]
После нажатия на описательное эссе. ОН показывает список дочерних эссе
[https://drive.google.com/open?id=1NLbkrKD9c8yZb7rvapCxb-Na_lCVJf3P ][2]
Теперь нажмите на заголовок эссе дочернего элемента списка «Не называйте человека счастливым до». он показывает полный ответ
[https://docs.google.com/uc?export=downloadamp;id=1542uOZFzLx8vU7EMlsEhRaWZaguVTKHV ] [3]
Я искал везде, я точно не знаю, что делать. Извините, но я новичок в разработке Android. Я только что создал пользовательский адаптер и список массивов
public class Writing extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.formenuitem);
ArrayList<MenuItems> essay = new ArrayList<>();
ArrayList<MenuItems> items = new ArrayList<>();
ArrayList<MenuItems> task2Item = new ArrayList<>();
//================= main items
items.add(new MenuItems("Descriptive Essay", "list of descriptive essay and solutions"));
items.add(new MenuItems("Essay 1", "More Essay list"));
items.add(new MenuItems("Type of Essay ", "How to start Essay Task 1, body-paragraph "));
items.add(new MenuItems("Task 2", "Solved essay "));
//show this list in when clicked on Descriotive essay item================================================================
task2Item.add(new MenuItems("Call No Man Happy Till","This essay about crime"));
task2Item.add(new MenuItems("Education","This essay about Education"));
task2Item.add(new MenuItems("University","This essay about University"));
task2Item.add(new MenuItems("Food","This essay about Food"));
task2Item.add(new MenuItems("Games","This essay about crime"));
task2Item.add(new MenuItems("Experience","This essay about crime"));
task2Item.add(new MenuItems("This is another essay","This essay about crime"));
task2Item.add(new MenuItems("This is another essay","This essay about crime"));
//======================set up for main item list
final ListAdapter adapter = new ListAdapter(this, items, R.color.category_numbers);
//setting adapter to have task 2 list
final ListAdapter task2list = new ListAdapter(Writing.this ,task2Item,R.color.category_numbers);
//creating variable to find list view for both
final ListView listView = findViewById(R.id.list);
final ListView task2 = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
// set up to click on the writing
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(position==0){
// make clickable at position 0
task2.setAdapter(task2list);
task2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position==0){
Intent open = new Intent(Writing.this,ContentDisplay.class);
startActivity(open);
}
}
});
}
}
});
}
}
I just when I open essay item it leads to me to an essay title list and when I click on essay title it shows me whole answer
[1]: https://i.stack.imgur.com/HpgLL.jpg
[2]: https://i.stack.imgur.com/wc4wx.jpg
[3]: https://i.stack.imgur.com/yLqeg.jpg
Ответ №1:
Вам нужен пользовательский адаптер. реализуйте прослушиватель onClick внутри представлений адаптера. и для position пометьте представление адаптера и получите его тег в прослушивателе. Я надеюсь, вы знакомы с созданием пользовательского адаптера. В случае, если вам нужна дополнительная помощь, я надеюсь помочь.
Комментарии:
1. спасибо за ваш ответ. и я уже пробовал, но я запутался. с данными, которые я должен хранить, чтобы я мог ссылаться на его идентификатор в пользовательском адаптере. Поэтому, когда я нажимаю на каждый элемент дочернего списка, он открывает разные эссе по каждому элементу. пример. Щелкните Описательное эссе. После нажатия на Описательное эссе. Он показывает список дочерних заголовков эссе, затем я вижу полное эссе
2. Если он показывает разные элементы, пометьте представление в адаптере, используя позицию, не забудьте преобразовать его в строку. Затем позже получите этот тег из прослушивателя onclick с помощью v.getTag() и используйте его для ссылки на нужный вам элемент.
3. Я только что получил некоторое представление о том, о чем вы говорите. ранее я делал это, чтобы иметь изображения в элементе списка с помощью пользовательского адаптера. если я застряну, я отправлю вам полный код, брат