select 一列 GridView
select one column of GridView
我有一个包含两列的 GridView,一个 ArrayList 填充了 GridView。
我的 CustomAdapter 处理 GridView 和 ArrayList 之间的数据。
GridView choiceMode 在我的 GridView xml 文件中是单一的,我可以从左列和右列中选择 select。
现在我想 select 只从左栏而不是右栏。
这是我的 GridView 设计 XML :
<GridView
android:layout_width="fill_parent"
android:layout_height="330dp"
android:layout_marginTop="15dp"
android:id="@+id/gridView"
android:numColumns="2"
android:layoutDirection="rtl"
android:foregroundGravity="center_horizontal"
android:gravity="right"
android:textDirection="locale"
android:background="#E6B800"
android:choiceMode="singleChoice"
android:layout_below="@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
这是我的 CustomAdapter Class :
public class CustomAdapter<String> extends ArrayAdapter<String> {
Context contex;
int id;
ArrayList<String> arrayList;
public CustomAdapter(Context contex, int layoutId, ArrayList<String> arrayList)
{
super(contex, id, arrayList);
this.contex = contex;
this.layoutId = id;
this.arrayList = arrayList;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return super.getView(position, convertView, parent);
}
}
这是我在另一个 Class 中对 CustomAdapter 的用法:
customAdapter = new CustomAdapter<String>(getApplicationContext(), android.R.layout.select_dialog_singlechoice, myList);
这里是我如何填写 ArrayList 的:
myList.add(driverName);
myList.add(plateNumber);
customAdapter.getItemViewType(R.id.gridView);
myAdapter.isEnabled(myAdapter.getPosition(plateNumber));
myGridView.setAdapter(customAdapter);
driverName 和 plateNumber 是添加到 ListView 的字符串
在数据进入我的列表后(在 while 循环之后)我添加了这段代码以防止 select 两列,但它不起作用:
customAdapter.areAllItemsEnabled();
customAdapter.isEnabled(customAdapter.getPosition(plateNumber));
再次,我更改了解决方案。
我使用了两个 listView 而不是一个有两行的 GridView。
并同步他们的动作。
如果你google,你会发现如何同步两个 ListView 的移动。
我有一个包含两列的 GridView,一个 ArrayList 填充了 GridView。 我的 CustomAdapter 处理 GridView 和 ArrayList 之间的数据。 GridView choiceMode 在我的 GridView xml 文件中是单一的,我可以从左列和右列中选择 select。 现在我想 select 只从左栏而不是右栏。
这是我的 GridView 设计 XML :
<GridView
android:layout_width="fill_parent"
android:layout_height="330dp"
android:layout_marginTop="15dp"
android:id="@+id/gridView"
android:numColumns="2"
android:layoutDirection="rtl"
android:foregroundGravity="center_horizontal"
android:gravity="right"
android:textDirection="locale"
android:background="#E6B800"
android:choiceMode="singleChoice"
android:layout_below="@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
/>
这是我的 CustomAdapter Class :
public class CustomAdapter<String> extends ArrayAdapter<String> {
Context contex;
int id;
ArrayList<String> arrayList;
public CustomAdapter(Context contex, int layoutId, ArrayList<String> arrayList)
{
super(contex, id, arrayList);
this.contex = contex;
this.layoutId = id;
this.arrayList = arrayList;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return super.getView(position, convertView, parent);
}
}
这是我在另一个 Class 中对 CustomAdapter 的用法:
customAdapter = new CustomAdapter<String>(getApplicationContext(), android.R.layout.select_dialog_singlechoice, myList);
这里是我如何填写 ArrayList 的:
myList.add(driverName);
myList.add(plateNumber);
customAdapter.getItemViewType(R.id.gridView);
myAdapter.isEnabled(myAdapter.getPosition(plateNumber));
myGridView.setAdapter(customAdapter);
driverName 和 plateNumber 是添加到 ListView 的字符串
在数据进入我的列表后(在 while 循环之后)我添加了这段代码以防止 select 两列,但它不起作用:
customAdapter.areAllItemsEnabled();
customAdapter.isEnabled(customAdapter.getPosition(plateNumber));
再次,我更改了解决方案。 我使用了两个 listView 而不是一个有两行的 GridView。 并同步他们的动作。 如果你google,你会发现如何同步两个 ListView 的移动。