gpt4 book ai didi

android - 将来自一个适配器的 ListView 中的元素与来自另一个 ListView 和适配器的值匹配

转载 作者:行者123 更新时间:2023-11-29 00:54:37 25 4
gpt4 key购买 nike

我有下一个 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>&quot;Text&quot;.</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>&quot;Text&quot;.</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>会重复几百次。

我已经使用 XMLPullParser 解析了 XML,创建了 2 个自定义适配器并创建了 2 个 ListView:

listView.setAdapter(adapter);//include all of <tag1>
listView2.setAdapter(adapterPr);//include all of <tag2>

默认情况下,我在 Activity 中显示 listView , 和 listView2GONE .

所以现在我有两个充满信息的 ListView。很多信息。

通过点击 listView 中的项目我想读取属性 <tag1 id="">并将其与属性 <tag2 tag1="107"> 进行比较.

如果比较成功 - 显示在listview2只有具有此 ID 的项目。

通过单击后退按钮,我将返回到 listView并想一次又一次地重复这个 Action 。

为此我尝试编写下一个 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 中显示我需要什么?

最佳答案

试试这个:

  1. ItemTag2 类中,添加:

    @Override
    public String toString() {
    return getTAG2id();
    }
  2. 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();
    }

    }
    });
    }

希望对您有所帮助!

关于android - 将来自一个适配器的 ListView 中的元素与来自另一个 ListView 和适配器的值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55675138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com