0

有谁知道我如何为我的 imageView 和 textView 创建一个 for 循环(?)而不将它们添加到我的 XML 文件中?我不确定是否也有可能......所以如果有人可以帮助我,我将不胜感激。为了您的信息,我想从另一个活动中获取数据。例如。如果用户单击添加到收藏夹按钮,我将在衣服图像和名称的此活动中显示另一个 imageView 和 textView。该活动还将显示添加到页面的先前项目。

XML 文件:

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/name"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="a" />

</LinearLayout>

在我的 onCreate 方法中:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_favourite);

    editButton = (Button)findViewById(R.id.edit);

    image = (ImageView)findViewById(R.id.image);
    name = (TextView)findViewById(R.id.name);


}

谢谢你。

4

2 回答 2

0

我不确定你想要什么,也许是这个

for (int i = 1; i <= 20; i++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT);
Button btn = new Button(this);
btn.setId(i);
final int id_ = btn.getId();
btn.setText("button " + id_);
btn.setBackgroundColor(Color.rgb(70, 80, 90));
linear.addView(btn, params);
btn1 = ((Button) findViewById(id_));
btn1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Toast.makeText(view.getContext(),
                "Button clicked index = " + id_, Toast.LENGTH_SHORT)
                .show();
    }
});
}
于 2013-06-18T14:49:46.383 回答
0

我认为你要做的是在你的布局中有一个 ListView,然后你创建一些实现的东西ListAdapterArrayAdapter是一个不错的选择)。在您的适配器中,您可以重用一个包含您的ImageView和.xml 文件的 xml 文件TextView

那里有很多很好的教程,谷歌搜索“ListView Adapter”会让你走得很远。这是一个很好的:http ://www.vogella.com/articles/AndroidListView/article.html

你的情况很简单,所以你可以使用ArrayAdapter这样的:

活动

public class MainActivity extends Activity {

    private ArrayAdapter<String> listAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>()) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {

                View v = convertView;
                if (convertView == null)
                {
                    v = super.getView(position, convertView, parent);
                }

                String text = getItem(position);

                TextView textview = ((TextView) v.findViewById(android.R.id.text1));
                textview.setText(text);

                // Now you can set an image by calling
                // textview.setCompoundDrawablesWithIntrinsicBounds(...);

                return v;
            }
        };

        ((ListView) findViewById(R.id.listView)).setAdapter(listAdapter);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            private int i = 0;
            @Override
            public void onClick(View view) {
                listAdapter.add("item number: " + (++i));
                listAdapter.notifyDataSetChanged();
            }
        });
    }

}

布局activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <ListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            tools:listitem="@layout/listview_row"
            android:layout_above="@+id/button"/>

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"/>

</RelativeLayout>

替代方案

如果您一心不使用ListView或出于某种原因不能使用列表视图,您可以随时扩充布局并将其添加到应用程序中的另一个布局中。然后,下面的代码将在单击按钮时替换上面的代码:

View row = getLayoutInflater().inflate(android.R.layout.simple_list_item_1, null); /* null here means it's not attaching/populating a view you already have */
((TextView) row.findViewById(android.R.id.text1)).setText("item number: " + (++i));

((ViewGroup) findViewById(R.id.linearlayout)).addView(row);
findViewById(R.id.linearlayout).invalidate();

在这里使用 aListView正确的方法,所以这是最后的手段。

于 2013-06-18T14:53:53.560 回答