使用LayoutInflator添加多个视图

时间:2017-03-07 17:53:17

标签: java android xml

我正在尝试在Android中动态创建一个“收藏夹”视图,记录用户是否喜欢我的应用程序中的特定声音咬合,然后将子视图插入到具有关于特定声音咬合的适当信息的父视图中。基本上,创建一个自定义的声音播放列表。

我遇到了layoutInflator的问题。如果我在父视图中添加了多个子视图,则只添加最后一个子视图将输入相应的参数,而其余子视图则具有子视图xml布局中的默认值。

这是我的java代码,显示添加子视图背后的一般想法:

LayoutInflater l = getLayoutInflater();
LinearLayout ll = (LinearLayout)findViewById(R.id.favlist);

if(getIntent().getExtras()!=null)
{
    Bundle extras = getIntent().getExtras();
    Intent test = getIntent();

    if(test.hasExtra("favThunder")){
        String favValues = extras.getString("favThunder");

        View v = l.inflate(R.layout.sublayout, null);
        ll.addView(v);

        ImageView favImage = (ImageView)findViewById(R.id.favimage);
        favImage.setImageResource(R.drawable.thundercats);

        TextView tv = (TextView) findViewById(R.id.favtitle);
        tv.setText(R.string.thundercats);

        TextView tvClicks = (TextView) findViewById(R.id.timesplayed);
        tvClicks.setText("Times played: " + favValues);

        favImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mp.isPlaying()) {
                    mp.stop();
                }

                mp = MediaPlayer.create(getApplicationContext(), R.raw.thunder);
                mp.start();
            }
        });


    }

    if(test.hasExtra("favSkeletor")){
        String favValues = extras.getString("favSkeletor");

        View v = l.inflate(R.layout.sublayout, null);
        ll.addView(v);

        ImageView favImage = (ImageView)findViewById(R.id.favimage);
        favImage.setImageResource(R.drawable.skeletor);

        TextView tv = (TextView) findViewById(R.id.favtitle);
        tv.setText(R.string.skeletor);

        TextView tvClicks = (TextView) findViewById(R.id.timesplayed);
        tvClicks.setText("Times played: "+favValues);


        favImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mp.isPlaying()) {
                    mp.stop();
                }

                mp = MediaPlayer.create(getApplicationContext(), R.raw.skeletor);
                mp.start();
            }
        });
    }

这是我的子视图和父视图xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/favimage"
        android:layout_width="0dp"
        android:layout_weight="0.5"
        android:layout_height="200dp"
        android:src="@drawable/thundercats"
        android:scaleType="fitCenter"/>

    <LinearLayout
        android:layout_weight="0.5"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/favtitle"
            android:layout_weight="0.4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A TEST TITLE"/>

        <TextView
            android:layout_weight="0.3"
            android:id="@+id/timesplayed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Times played: Heck!"/>

    </LinearLayout>

</LinearLayout>

父xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    tools:context="com.example.markohare.ohareb00716779_cw1.MainActivity"
    >

    <LinearLayout
        android:id="@+id/favlist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="5dp">

    </LinearLayout>

</ScrollView>

我做错了什么?我的子视图是否太复杂或者我的java代码中有什么问题?

由于

0 个答案:

没有答案