我有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>
答案 0 :(得分:0)
在get()
中,position
是ListView
中的位置,而不是行中每个特定View
的位置。这意味着在第一个周期中,您始终将0传递给ClassList
到get()
,因此它始终返回第一个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应该是仅分配一次的类变量