-1

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

但我希望每个按钮都有唯一的文本,因为字符串列表有。

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

1   1   1

2   2   2

3   3   3

但我想要这样:

1   2   3

4   5   6

7   8   9

我的类代码:

    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>
4

3 回答 3

0

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

如果这些是您将拥有的唯一值,那么您可以Arrays使用 3 ints 创建 3 个不同的值,并Array根据positionusingswitch语句决定使用哪个值。

您还可以使用position来决定从哪里开始,每次Array将值增加一个,for loop以获得每个 3 Buttons 的下一个值。

编辑

switch position
{
    case 0:
       button1.setTag(Class.get(0);
       button2.setTag(Class.get(1);
       button3.setTag(Class.get(2);
       break;
    case 1:
       button1.setTag(Class.get(3);
       button2.setTag(Class.get(4);
       button3.setTag(Class.get(5);
       break;
    ...
}
于 2013-09-25T13:12:44.307 回答
0

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

编辑:您是否将拥有固定数量的 ListView 项目,它会有所不同吗?

于 2013-09-25T13:14:48.450 回答
0

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

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

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

记住 cntr 应该是一个只分配一次的类变量

于 2013-09-25T13:19:28.400 回答