listview with 4 textview

时间:2012-05-22 11:04:06

标签: android listview android-listview adapter

我必须创建一个listview,其中单行有4个textview。 我的问题是我不明白如何使用适配器,所以有人可以帮助我使用适配器及其实现?

这是我的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical" >




<TextView
    android:id="@+id/textView1"
    android:layout_width="192dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="20dp"
    android:text="Grazie per aver parcheggiato da noi!"
    android:textAppearance="?android:attr/textAppearanceMedium" />

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


<Button
    android:id="@+id/btnEsci"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="Torna a scelta" />

</LinearLayout>

这是单行(single_feed)

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

 <!-- TEXT OF FEED -->

 <TextView
        android:id="@+id/txtId"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Numero macchina: #"
        android:textAppearance="?android:attr/textAppearanceMedium" />

  <TextView
        android:id="@+id/txtTarga"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Targa: #"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/txtOra"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ora ingresso: #"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <TextView
        android:id="@+id/txtCosto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Prezzo uscita: #"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:lines="1" 
        />

这是我的适配器:

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

        public MioAdapter(Context context, String[] values) {
            super(context, R.layout.single_feed, 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.single_feed, parent, false);
            TextView textView = (TextView) rowView.findViewById(R.id.label);
            textView.setText(values[position]);
            // Change the icon for Windows and iPhone


            return rowView;
        }

最后这是我的活动:

public class checkout extends Activity{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        //apro la view
        super.onCreate(savedInstanceState);
        setContentView(R.layout.checkout);

        //gestsco l'adapter per creare la lista
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                    "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
                    "Linux", "OS/2" };
            MioAdapter adapter = new MioAdapter(this, values);
            setListAdapter(adapter);
};

有人可以帮我配合适配器吗? 感谢所有可以帮助我解决这个问题的方法:)

4 个答案:

答案 0 :(得分:2)

See this Custom listView

行中有两个文本视图,您只需添加四个textview,然后添加行布局文件。并为单行textview添加in textview android:maxLines="1"

答案 1 :(得分:1)

对于单行(single_feed):

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

同时保持layout_width对所有文本视图都固定,以便它们可以适合单行。

答案 2 :(得分:1)

  1. 在single_feed.xml布局中添加4个Textviews。这将是你的listitem的布局
  2. 在MioAdapter的getview中找到所有textview的ID
  3. 通过将int作为实例变量来维护适配器中的索引。
  4. 在getView
  5. 中指定文字

答案 3 :(得分:0)

首先,某处出现了问题。如果你想要一个ListView,你需要一个元素列表(一个元素,一行)。

因此,如果您想要每行多个TextView,则每个元素需要多个值。所以你需要一个数组数组。

您也可以尝试使用SimpleCursorAdapter。您使用以下数据构建MatrixCursor:MatrixCursor mc = new MatrixCursor(your_column_names);并添加元素(每行一个):mc.addRow(row_values);(其中your_column_namesrow_values的类型为String[]

然后使用SimpleCursorAdapter,其中String[] from = your_column_valuesint[] to = your_TextView_ids(来自single_feed.xml的ID)