2013-03-13 50 views

回答

1

源的代碼如下所示:http://www.vogella.com/articles/AndroidListView/article.html

當您創建一個簡單的ListView,你會使用這樣的:

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/mylist" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ListView> 

</LinearLayout> 

JAVA:

ListView listView = (ListView) findViewById(R.id.mylist); 
String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
     "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
     "Linux", "OS/2" }; 

// Define a new Adapter 
// First parameter - Context 
// Second parameter - Layout for the row 
// Third parameter - ID of the TextView to which the data is written 
// Forth - the Array of data 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, android.R.id.text1, values); 


// Assign adapter to ListView 
listView.setAdapter(adapter); 

創建自定義ListView,你通常會做這樣的事情:

package de.vogella.android.listactivity; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 
    private final Context context; 
    private final String[] values; 

    public MySimpleArrayAdapter(Context context, String[] values) { 
     super(context, R.layout.rowlayout, values); 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
     TextView textView = (TextView) rowView.findViewById(R.id.label); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
     textView.setText(values[position]); 
     // Change the icon for Windows and iPhone 
     String s = values[position]; 
     if (s.startsWith("iPhone")) { 
      imageView.setImageResource(R.drawable.no); 
     } else { 
      imageView.setImageResource(R.drawable.ok); 
     } 
     return rowView; 
    } 
} 

在這個例子中,如果你看行: View rowView = inflater.inflate(R.layout.rowlayout, parent, false);,在R.layout.rowlayout是用來顯示您的自定義ListView您的自定義佈局。

請參閱答案頂部的源代碼鏈接,瞭解關於ListView's的詳細教程。

+0

@Cupcake:不。它不是從那裏來的。代碼的來源已經在這個答案的第一句話中被賦予了權利。你的第二部分是正確的。這是教程的一部分。 – 2014-07-18 04:59:43

+0

我的錯誤,抱歉。 – 2014-07-18 05:02:24

1

單獨的xml是爲每一行listview創建的。 listview需要顯示項目,所以應該使用像textview,imageview這樣的視圖來顯示......所以根據你需要的佈局的需要。

1

您不必創建單獨的佈局。您可以在運行時創建佈局。

相關問題