Несколько ListViews в одной деятельности в Android? - PullRequest
0 голосов
/ 05 апреля 2010

Я хочу иметь несколько списков в одном действии. Но только один listview должен отображаться одновременно. Списки просмотров будут загружены динамически. Итак, как я могу заполнить все четыре списка одновременно время и дисплей только один?

Ответы [ 4 ]

4 голосов
/ 04 июля 2010

Вместо того, чтобы использовать весь этот код для переключения между списками, почему бы не поместить все ваши списки в ViewFlipper? Это самый простой способ, требующий почти 1 строки кода! :)

-Moto

0 голосов
/ 05 апреля 2010

Вы должны использовать FrameLayout; он позволяет упорядочивать дочерние представления по z, что означает, что вы можете располагать свои ListView друг над другом. Затем вы можете переключать видимость каждого из этих ListViews из своего кода, используя метод View#setVisibility(). Вы должны создать соответствующие адаптеры для каждого из этих ListViews, и когда бы ни рисовался ListView, фреймворк будет вызывать getView() метод требуемого адаптера.

0 голосов
/ 05 апреля 2010

Я использовал в основном один и тот же способ отображения нескольких списков, как вы предлагали, т. Е. С помощью setvisibility.

Но теперь я хочу получить растровое изображение всех четырех списков.Предположим, моя активность начинается, и данные загружаются во все четыре списка, связывая их с соответствующими адаптерами.Теперь, когда я пытаюсь получить растровое изображение с помощью getDrawingCache(), оно всегда возвращает мне нулевое значение.

Итак, вы можете сообщить мне, как я могу получить растровое изображение всех четырех списков просмотра?

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
0 голосов
/ 05 апреля 2010

Вы можете сделать одну вещь для вашей проблемы. Причина, по которой вы увидите только один вид списка, может заключаться в том, что один список будет иметь значение параметра родительского заполнения для его высоты. Что вам нужно сделать, это использовать абсолютный макет или просто установить высоту для каждого макета. Также используйте вид прокрутки, чтобы разместить элементы управления. Более того, если вы разместите здесь свой XML-макет, вам будет проще ответить на вопрос, где вам нужно внести изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...