代码之家  ›  专栏  ›  技术社区  ›  danyapd

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

  •  0
  • danyapd  · 技术社区  · 6 年前

    我有下一个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>
    

    在活动中默认显示 listView listView2 GONE .

    所以现在我有两个信息列表视图。很多信息。

    单击中的项目 列表框 我想读取属性 <tag1 id=""> 并与属性进行比较 <tag2 tag1="107"> .

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

    单击后退按钮,我将返回 列表框 想一次又一次重复这个动作。

    为此,我试着写下一个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();
                            }
    
                       }
    

    但我所尝试的一切都是错误的,我仍然无法实现我所需要的。

    我想写下在执行这段代码时发生的事情,但我知道我没有做任何过滤工作。 列表视图2 某些物品的无用物品 列表框 我不知道该怎么办。

    如何比较值并显示 列表视图2 我需要什么?

    0 回复  |  直到 6 年前
        1
  •  1
  •   i_A_mok    6 年前

    试试这个:

    1. 里面 项目标签2 类,添加:

      @Override
      public String toString() {
          return getTAG2id();
      }
      
    2. 变化 监视器监视器 为此:

          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();
                      }
      
                  }
              });
          }
      

    希望有帮助!