【问题标题】:Multiple Listviews in single Activity in Android?Android中单个活动中的多个列表视图?
【发布时间】:2010-04-05 05:12:42
【问题描述】:

我想在单个活动中拥有多个列表视图。但只有一个 listview 应该一次显示。列表视图将被加载 动态的。那么,我怎样才能同时填充所有四个列表视图 时间并只显示一个?

【问题讨论】:

  • 只显示一个意味着,你想隐藏树的其余部分,或者你想一次只显示一个,在特定的操作上你想显示另一个。无论您想做什么,首先要做一件事,您可以实现将在所有 3 -4 列表视图中加载数据的代码,这意味着创建适配器并与列表视图绑定。然后隐藏其余的 3. 并且您可以根据需要将它们一一显示。

标签: android listview android-activity


【解决方案1】:

与其使用所有代码在列表视图之间翻转,为什么不将所有列表视图放在 ViewFlipper 中?这是最简单的方法,几乎​​需要 1 行代码! :)

-摩托

【讨论】:

    【解决方案2】:

    你可以为你的问题做一件事。您只会看到一个列表视图的原因可能是因为一个列表的高度将具有填充父参数值。你需要做的是,使用绝对布局或者只是固定每个布局的高度。还使用滚动视图来放置控件。此外,如果您在此处发布您的 XML 布局,则更容易回答您需要在哪里进行更改的查询。

    【讨论】:

      【解决方案3】:

      您应该使用FrameLayout;它允许对其子视图进行 z 排序,这意味着您可以将 ListView 堆叠在另一个之上。然后,您可以使用 View#setVisibility() 方法从您的代码中切换每个 ListView 的可见性。 您将为这些 ListView 中的每一个创建适当的适配器,并且每当要绘制 ListView 时,框架将调用所需适配器的 getView() 方法。

      【讨论】:

      • 我使用了与您建议的显示多个列表视图相同的方式,即使用 setvisibility 参数。但现在我想要的是拥有所有四个列表视图的位图图像。假设,我的活动开始并且通过将它们绑定到它们各自的适配器来将数据加载到所有四个列表视图中。现在,当我尝试使用 getDrawingCache() 获取位图时,它总是返回 null 给我。那么,您能告诉我如何获取所有四个列表视图的位图吗?
      【解决方案4】:

      我使用的显示多个列表视图的方式与您基本相同 建议,即使用 setvisibility。

      但现在我想要的是拥有所有四个的位图图像 列表视图。假设,我的活动开始并且数据被加载到 所有四个列表视图通过将它们绑定到各自的适配器。 现在,当我尝试使用 getDrawingCache() 获取位图时 总是返回 null 给我。

      那么,你能告诉我如何获取所有四个的位图吗? 列表视图?

      public class HomeScreenActivity extends Activity
      {
      private ImageView imgBabble = null;
      private ListView listBabble = null;
      private ListView listVille = null;
      private ListView listPrivateMsgs = null;
      private ListView listBookmarks = null;
      private List<String> tempBabble = null;
      private List<String> tempVille = null;
      private List<String> tempPrivateMsgs = null;
      private List<String> tempBookmarks = null;
      
      //RelativeLayouts
      private RelativeLayout babbleLayout = null;
      private RelativeLayout villeLayout = null;
      private RelativeLayout privateMsgsLayout = null;
      private RelativeLayout bookmarksLayout = null;
      
      //Bitmap
      private Bitmap babbleShrunkView = null;
      private Bitmap villeShrunkView = null;
      private Bitmap privateMsgsShrunkView = null;
      private Bitmap bookmarksShrunkView = null;
      
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) 
      {
          super.onCreate(savedInstanceState);
          requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
          setContentView(R.layout.homescreen);
          getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitle);
      
          imgBabble = (ImageView) findViewById(R.id.imgBtnBabble);
          Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.babble_top_logo);
          BitmapDrawable bmpDrawable = new BitmapDrawable(bitmapOrg);
          imgBabble.setBackgroundDrawable(bmpDrawable);
      
          //Initialize the layouts for Babble, Ville, Private Messages and Bookmarks
          babbleLayout = (RelativeLayout) findViewById(R.id.babbleLayout);
          babbleLayout.setDrawingCacheEnabled(true);
      
          villeLayout = (RelativeLayout) findViewById(R.id.villeLayout);
          villeLayout.setDrawingCacheEnabled(true);
      
          privateMsgsLayout = (RelativeLayout) findViewById(R.id.privatemsgsLayout);
          privateMsgsLayout.setDrawingCacheEnabled(true);
      
          bookmarksLayout = (RelativeLayout) findViewById(R.id.bookmarksLayout);
          bookmarksLayout.setDrawingCacheEnabled(true);
      
          //Babble
          tempBabble = new ArrayList<String>();
          tempBabble.add("First Babble");
          tempBabble.add("Second Babble");
          tempBabble.add("Third Babble");
      
          listBabble = (ListView) findViewById(R.id.listBabble);
          listBabble.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tempBabble));
          //babbleShrunkView = babbleLayout.getDrawingCache();
      
          //babbleLayout = (RelativeLayout) findViewById(R.id.listLayout);
      
          if(babbleShrunkView == null)
          {
              System.out.println("Babble View is null");
          }
      
          //Ville
          tempVille = new ArrayList<String>();
          tempVille.add("First Ville");
          tempVille.add("Second Ville");
          tempVille.add("Third Ville");
      
          listVille = (ListView) findViewById(R.id.listVille);
          //listVille.setDrawingCacheEnabled(true);
          listVille.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tempVille));
          //villeShrunkView = villeLayout.getDrawingCache();
      
          if(villeShrunkView == null)
          {
              System.out.println("Ville View is null");
          }
      
          //listVille.setVisibility(View.GONE);
      
          //Private Messages
          tempPrivateMsgs = new ArrayList<String>();
          tempPrivateMsgs.add("First PM");
          tempPrivateMsgs.add("Second PM");
          tempPrivateMsgs.add("Third PM");
      
          listPrivateMsgs = (ListView) findViewById(R.id.listPrivateMessages);
          //listPrivateMsgs.setDrawingCacheEnabled(true);
          listPrivateMsgs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tempPrivateMsgs));
          //privateMsgsShrunkView = privateMsgsLayout.getDrawingCache();
      
          if(privateMsgsShrunkView == null)
          {
              System.out.println("Private Messages View is null");
          }
      
          //listPrivateMsgs.setVisibility(View.GONE);
      
          //Bookmarks
          tempBookmarks = new ArrayList<String>();
          tempBookmarks.add("First Bookmarks");
          tempBookmarks.add("Second Bookmarks");
          tempBookmarks.add("Third Bookmarks");
      
          listBookmarks = (ListView) findViewById(R.id.listBookmarks);
          //listBookmarks.setDrawingCacheEnabled(true);
          listBookmarks.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, tempBookmarks));
          //bookmarksShrunkView = bookmarksLayout.getDrawingCache();
      
          if(bookmarksShrunkView == null)
          {
              System.out.println("Bookmarks Messages View is null");
          }
      
          //listBookmarks.setVisibility(View.GONE);
      
          imgBabble.setOnClickListener(new View.OnClickListener() 
          {
              @Override
              public void onClick(View v) 
              {
                  System.out.println("Babble Clicked");
      
                  babbleShrunkView = babbleLayout.getDrawingCache();
                  villeShrunkView = villeLayout.getDrawingCache();
                  privateMsgsShrunkView = privateMsgsLayout.getDrawingCache();
                  bookmarksShrunkView = bookmarksLayout.getDrawingCache();
      
                  BabbleVilleShrinkView.addBitmap(0, resizeBitmap(200, 200, babbleShrunkView));
                  BabbleVilleShrinkView.addBitmap(1, resizeBitmap(200, 200, villeShrunkView));
                  BabbleVilleShrinkView.addBitmap(2, resizeBitmap(200, 200, privateMsgsShrunkView));
                  BabbleVilleShrinkView.addBitmap(3, resizeBitmap(200, 200, bookmarksShrunkView));
      
                  Gallery gallery = new Gallery(getApplicationContext());
                  gallery.setAdapter(new ImageAdapter(getApplicationContext()));
              }
          });
      } // End of class
      

      【讨论】:

      • 我可以通过将所有列表视图的 setVisibility 设置为 Visible 来解决这个问题,然后通过 getDrawingCache 获取位图。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多