簡體   English   中英

如何以編程方式編輯創建的視圖

[英]How to edit view created programmatically

所以在我的應用程序中,我有一個線性布局,以編程方式向其中添加了一些CardViews(android L cardview),如下所示:

    //This is my LinearLayout
    LinearLayout myLayout = (LinearLayout) findViewById(R.id.accounts_layout);

    //Here i create my CardView from a prepared xml layout and inflate it to the LinearLayout
    View card = View.inflate(getApplicationContext(), R.layout.account_card, myLayout);

    //Now i change the 'text' value of the Card's text views
    TextView cardTitle = (TextView) card.findViewById(R.id.text_card_title);
    cardTitle.setText("Title1");
    TextView cardDecription = (TextView) card.findViewById(R.id.text_card_description);
    cardDecription.setText("Description1");
    //...

    //Now i do the same thing for another card
    View card2 = View.inflate(getApplicationContext(), R.layout.account_card, myLayout);

    TextView cardTitle2 = (TextView) card2.findViewById(R.id.text_card_title);
    cardTitle2.setText("Title2");
    TextView cardDecription2 = (TextView) card2.findViewById(R.id.text_card_description);
    cardDecription2.setText("Description2");
    //...

正確顯示了兩張卡,但是發生的情況是,顯示的第一張卡在textViews中寫入了“ Title2”和“ Description2”,而第二張卡具有xml中定義的默認值。 在我看來,通過調用card.findViewById()card2.findViewById()我總是得到第一張卡片的TextView。 所以我的問題是:我如何設法區分以編程方式創建的卡片,然后正確訪問其中的視圖?

嘗試這種方式,希望這將幫助您解決問題。

        LinearLayout myLayout = (LinearLayout) findViewById(R.id.accounts_layout);
        for (int i=1;i<=2;i++){

            View card = View.inflate(getApplicationContext(), R.layout.account_card, null);
            TextView cardTitle = (TextView) card.findViewById(R.id.text_card_title);
            cardTitle.setText("Title"+i);
            TextView cardDecription = (TextView) card.findViewById(R.id.text_card_description);
            cardDecription.setText("Description"+i);

            card.setTag(i);
            card.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int pos = (Integer) v.getTag();
                    Toast.makeText(context,pos,Toast.LENGTH_SHORT).show();
                }
            });
            myLayout.addView(card);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM