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 的移动。