У меня есть следующий XML файл:
<?xml version="1.0" encoding="utf-8"?>
<myxml source-info-url="http://url.com/" source-info-name="URLName" generator-info-url="http://url.org/">
<tag1 id="92">
<display-name>1</display-name>
<icon src="http://some_valid_url.gif" />
</tag1>
<tag1 id="107">
<display-name>2</display-name>
<icon src="http://some_valid_url.gif" />
</tag1>
<tag1 id="175">
<display-name>3</display-name>
<icon src="http://some_valid_url.gif" />
</tag1>
<tag1 id="346">
<display-name>4</display-name>
<icon src="http://some_valid_url.gif" />
</tag1>
<tag1 id="357">
<display-name>5</display-name>
<icon src="http://some_valid_url.gif" />
</tag1>
<tag2 attr1="" attr2="" tag1="92">
<exampletag1>Text</exampletag1>
<exampletag2 lang="en">Text</exampletag2>
<exampletag3 id="21">Text</exampletag3>
<desc lang="en">Text.</desc>
<exampletag4>6</exampletag4>
</tag2>
<tag2 attr1="" attr2="" tag1="92">
<exampletag1>"Text".</exampletag1>
<exampletag2 lang="en">Text</exampletag2>
</tag2>
<tag2 attr1="" attr2="" tag1="92">
<exampletag1>Text.</exampletag1>
<exampletag2 lang="en">Text</exampletag2>
</tag2>
<tag2 attr1="" attr2="" tag1="107">
<exampletag1>"Text".</exampletag1>
<exampletag2 lang="en">Text</exampletag2>
<exampletag3 id="22">Text</exampletag3>
<exampletag3 id="32">Text</exampletag3>
<exampletag3 id="21">Text</exampletag3>
<desc lang="en">Text.</desc>
<exampletag4>6</exampletag4>
</tag2>
</myxml>
<tag2>
будет повторяться несколько тысяч раз. <tag1>
будет повторяться несколько сотен раз.
Я проанализировал XML с XMLPullParser, создал 2 пользовательских адаптера и создал 2 ListViews:
listView.setAdapter(adapter);//include all of <tag1>
listView2.setAdapter(adapterPr);//include all of <tag2>
В активности по умолчанию я показываю listView
, а listView2
GONE
.
Итак, теперь у меня есть два ListView, заполненных информацией. Много информации.
Нажав на элементы в listView
я хочу прочитать атрибут <tag1 id="">
и сравнить его с атрибутом <tag2 tag1="107">
.
Если сравнение успешное - показывать в listview2
только элементы с этим идентификатором.
Нажав кнопку "Назад", я возвращаюсь в listView
и хочу повторить эти действия снова и снова.
Для этого я попытался написать следующий OnItemClickListener (в том числе с комментариями, также пытался без for
):
private List<ItemTAG1> items = new ArrayList();
private List<ItemTAG2> items2 = new ArrayList();
...
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
for(int i=0; i<=items.size(); i++) {
// ItemTAG1 itemTAG1 = adapter.getItem(position);
// ItemTAG2 itemTAG2 = adapter2.getItem(position);
ItemTAG1 itemTAG1 = items.get(i);
ItemTAG2 itemTAG2 = items2.get(i);
String tmpCI = itemTAG1.getTAGId();
String tmpPCI = itemTAG2.getTAG2id();
if (!tmpCI.equals(tmpPCI)) {
listView.setVisibility(View.GONE);
listViewProgrammes.setVisibility(View.VISIBLE);
} else {
// adapterPr.remove(item2);
Toast.makeText(MyaActivity.this, "No data for this item!", Toast.LENGTH_SHORT).show();
}
}
Но все, что я пробовал, неверно, и я все еще не могу достичь того, что мне нужно.
Я хочу написать, что происходит, когда я выполняю этот код, но я понял, что ничего не сделал для фильтрации listView2
от бесполезных элементов для определенного элемента listView
и я понятия не имею, что мне следует для этого сделать.
Как я могу сравнить значения и показать в listView2
то, что мне нужно?
Попробуй это:
Внутри класса ItemTag2 добавьте:
@Override
public String toString() {
return getTAG2id();
}
Измените OnItemClickListener на это:
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ItemTAG1 itemTAG1 = items.get(position);
String tmpCI = itemTAG1.getTAGId();
adapter2.getFilter().filter(tmpCI, new Filter.FilterListener() {
@Override
public void onFilterComplete(int count) {
if(count > 0) {
listView2.setVisibility(View.VISIBLE);
}else{
listView2.setVisibility(View.GONE);
Toast.makeText(MyaActivity.this, "No data for this item!", Toast.LENGTH_SHORT).show();
}
}
});
}
Надеюсь, это поможет!
listView2
меня есть элементы из первого элементаlistView2
. Количество этих элементов верно, а текст неверен. Как я могу это исправить?