在行中使用三个按钮

时间:2013-09-25 13:02:31

标签: android android-layout listview android-linearlayout

我有listView的行,每行应该有三个按钮

但我希望每个按钮都有唯一的文本作为String的列表。

我已尝试过该代码,但它给了我以下结果

1   1   1

2   2   2

3   3   3

但我想这样:

1   2   3

4   5   6

7   8   9

myclass代码:

    public View getView(final int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflator = context.getLayoutInflater();
            view = inflator.inflate(R.layout.rep2, null);
            ViewHolder viewHolder = new ViewHolder();

            viewHolder.Button1 = (Button) view.findViewById(R.id.Button01);

            viewHolder.Button2 = (Button) view.findViewById(R.id.Button02);

            viewHolder.Button3 = (Button) view.findViewById(R.id.Button03);

            // viewHolder.row = (TableRow) view.findViewById(R.id.TableRow06);

            view.setTag(viewHolder);
            viewHolder.row.setTag(ClassList.get(position));

            viewHolder.Button1.setTag(ClassList.get(position));

            viewHolder.Button2.setTag(ClassList.get(position));

            viewHolder.Button3.setTag(ClassList.get(position));
        } else {
            view = convertView;

            ((ViewHolder) view.getTag()).Button1
                    .setTag(ClassList.get(position));

            ((ViewHolder) view.getTag()).Button2
                    .setTag(ClassList.get(position));

            ((ViewHolder) view.getTag()).Button3
                    .setTag(ClassList.get(position));

            ((ViewHolder) view.getTag()).row.setTag(ClassList.get(position));

        }

布局xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <Button
        android:id="@+id/Button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="25dp"
        android:background="@drawable/classes" />

<Button
        android:id="@+id/Button02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="25dp"
        android:background="@drawable/classes" />

<Button
        android:id="@+id/Button03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="25dp"
        android:background="@drawable/classes" />

</LinearLayout>

3 个答案:

答案 0 :(得分:0)

get()中,positionListView中的位置,而不是行中每个特定View的位置。这意味着在第一个周期中,您始终将0传递给ClassListget(),因此它始终返回第一个index(1)的值。

如果这些是您将拥有的唯一值,那么您可以使用3 Arrays创建3个不同的int,并根据{{1}确定要使用的Array使用position语句。

您还可以使用switch来确定从position开始的位置,并在每次Array中将值增加1,以获得3中每个值的下一个值for loop秒。

修改

Button

答案 1 :(得分:0)

数字是相同的,因为每行包含三个按钮,因此您将文本设置为它们所处的位置。由于1行hasthree按钮,每个按钮的位置始终相同。您必须打开您的位置并相应地更改值。

编辑:你是否会有固定数量的ListView项目会有所不同吗?

答案 2 :(得分:0)

在适配器类中获取一个名为cntr = 0的变量,并将值设置为

 viewHolder.Button1.setTag(ClassList.get(cntr++));

  viewHolder.Button2.setTag(ClassList.get(cntr++));
     viewHolder.Button3.setTag(ClassList.get(cntr++));

请记住cntr应该是仅分配一次的类变量