0

スクロール ビューで 4 つの線形レイアウトを複数回膨張させています。各レイアウトのヘッダーにはタイトルがあります。コード スニペットを以下に示します。

for(int j=0;j<qType.length;j++)
    {           
        LinearLayout.LayoutParams siz = new LinearLayout.LayoutParams(width, height);;
        if(qType[j]==0)
        {               
            view1 = getLayoutInflater().inflate(R.layout.layout1, main_layout,false);
            siz = new LinearLayout.LayoutParams(width, height/3);                                       
        }
        else if(qType[j]==1)
        {                
            view1 = getLayoutInflater().inflate(R.layout.layout3, main_layout,false);
            siz = new LinearLayout.LayoutParams(width, height/3);
        }
        else if(qType[j]==2)
        {           
            view1 = getLayoutInflater().inflate(R.layout.layout4, main_layout,false);
            siz = new LinearLayout.LayoutParams(width, height/3);
        }
        else if(qType[j]==3)
        {           
            view1 = getLayoutInflater().inflate(R.layout.layout5, main_layout,false);
            siz = new LinearLayout.LayoutParams(width, height/2);
        }       

        siz.topMargin = 25;
        main_layout.addView(view1, siz);            
    }
    scroll_layout.addView(main_layout);
    scroll_layout.setBackgroundResource(R.drawable.options_background);     
    setContentView(scroll_layout);  

各レイアウトにテキストビューがあり、そのテキストを変更したい。findviewbyid でそれらにアクセスして settext を指定すると、最初のインスタンスのみが変更されるため、常にテキストビューを変更したいと考えています。

    for(int k=0;k<NumberQuestions.length;k++)
    {
        TextView number_title = (TextView)main_layout.findViewById(R.id.number_title);
        TextView mcq_title = (TextView)main_layout.findViewById(R.id.mcq_title);
        TextView comment_title = (TextView)main_layout.findViewById(R.id.comment_title);
        TextView cam_title = (TextView)main_layout.findViewById(R.id.cam_title);
        if(qType[k]==0)
        {               
            number_title.setTypeface(myriadpro_bold);
            number_title.setText(NumberQuestions[k]);

        }
        if(qType[k]==1)
        {
            comment_title.setTypeface(myriadpro_bold);
            comment_title.setText(NumberQuestions[k]);              
        }
        else if(qType[k]==2)
        {
            mcq_title.setTypeface(myriadpro_bold);
            mcq_title.setText(NumberQuestions[k]);              
        }
        else if(qType[k]==3)
        {
            cam_title.setTypeface(myriadpro_bold);
            cam_title.setText(NumberQuestions[k]);              
        }           

助けてください。

4

3 に答える 3

0

免責事項:Androidフレームワークを使用するのではなく、Androidフレームワークに対抗しようとしているように感じます。私の提案は少しオーバーホールですが、それが物事を進める正しい方法だと思います。

同じフォーマットを何度も繰り返すので、ListViewを使用することをお勧めします。リストビューには通常、オブジェクトのオブジェクトのコンテナと、オブジェクトをリストビュー内の特定の行にマッピングするためのアダプタがあります。基になるコンテナのデータを変更すると、アダプタのコールバックを呼び出してnotifyDataSetChanged()、基になるデータを変更したことを通知し、リストビューを更新するように警告します。

android開発者サイトからの2つの優れたリソース/チュートリアル:ListView:http ://developer.android.com/guide/topics/ui/layout/listview.html アダプター:http ://developer.android.com/guide/topics/ ui /declaring-layout.html#AdapterViews

于 2013-03-20T17:43:47.403 に答える
0

おそらくandroid: idすべてのレイアウトの TextView は同じであるため、メソッド findViewById の動作を説明すると、常に最初に出現したものが返されます

于 2013-03-20T17:44:39.433 に答える
0

私が正しい場合、main_layoutはxmlファイルの名前ビューです。したがって、このように使用する必要があります

 view1 = getLayoutInflater().inflate(R.layout.layout1, main_layout,false);
 TextView tv = (TextView)main_layout.findViewById(R.id.tv1);

tv は、layout1.xml の texview です。

于 2013-03-20T18:13:21.030 に答える