Android:用对象填充listview

时间:2015-05-11 20:31:34

标签: android android-layout android-listview

我想知道是否可以在Android的Listview中放置TextView列表。我尝试了这段代码,但结果并没有给我正确的文字。我想显示20 toto进行测试。

这是我的Main.class

public class MainActivity extends Activity {

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

    listview = (ListView) findViewById(R.id.listcontacts);

    // Instanciating an array list (you don't need to do this, 
    // you already have yours).
    List<TextView> contacts = new ArrayList<TextView>();
    for(int i = 0 ; i< 20; i++)
    {
        TextView toto = new TextView(this);
        toto.setText("toto");
        contacts.add(toto);

    }

    // This is the array adapter, it takes the context of the activity as a 
    // first parameter, the type of list view as a second parameter and your 
    // array as a third parameter.
    ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(
            this, 
            android.R.layout.simple_list_item_1,
            contacts );

    listview.setAdapter(arrayAdapter); 
}

然后是主

的XML文件
 <ListView
        android:id="@+id/listcontacts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

 </ListView>

我是否需要在listview中创建TextView并在我的课程中调用“findViewById(TextView)”?

感谢。

5 个答案:

答案 0 :(得分:1)

  

我是否需要在listview中创建TextView并调用   &#34; findViewById(的TextView)&#34;在我班上?

不,你不应该。适配器负责使您的数据集适应某种可视化。例如,ArrayAdapter正在使用simple_list_item_1.xml中包含的TextView。在您的情况下,contacts应为ArrayList<String>且适配器应为Adapter<String>

答案 1 :(得分:0)

只需更改字符串的TextView数组:

删除:

  List<TextView> contacts = new ArrayList<TextView>();
    for(int i = 0 ; i< 20; i++)
    {
        TextView toto = new TextView(this);
        toto.setText("toto");
        contacts.add(toto);

    }

和:

ArrayAdapter<TextView> arrayAdapter = new ArrayAdapter<TextView>(
        this, 
        android.R.layout.simple_list_item_1,
        contacts );

添加:

List<String> contacts = new ArrayList<String>();
    for(int i = 0 ; i< 20; i++)
    {
        contacts.add("toto");

    }

  ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                this, 
                android.R.layout.simple_list_item_1,
                contacts );

答案 2 :(得分:0)

您不必创建TextViews适配器为您执行此操作。只需创建

List<String> contacts = new ArrayList<String>(20);
for(int i = 0 ; i< 20; i++) {
    contacts.add("toto");
}

并致电

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        this, 
        android.R.layout.simple_list_item_1,
        contacts );

答案 3 :(得分:0)

您可以创建自定义适配器。或者使用String适配器。

cmd=( myscript.py --name="Some Text With Spaces" )
"${cmd[@]}"

答案 4 :(得分:0)

谢谢大家的回答。我在网上找到了一些东西并进行了测试。这正是我想要做的。

&#34;使用自定义ArrayAdapter&#34;是我使用的解决方案。

https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView

在此,他们创建一个包含2个String数据的模型。 然后创建要显示的模板xml。 并创建适配器来填充数据。 填写数据。