选择一列GridView

时间:2015-10-10 08:27:13

标签: java android gridview android-arrayadapter baseadapter

我有一个带有两列的GridView,一个ArrayList填写了GridView。 我的CustomAdapter处理GridView和ArrayList之间的数据。 GridView选择模式在我的GridView xml文件中是单一的,我可以从左列和右列中选择。 现在我想从左栏中选择,而不是从右栏中选择。

这是我的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类:

 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);
    }

}

这是我在另一个类中使用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

的String

在数据输入我的列表后(在while循环之后)我添加了这段代码以防止选择这两列,但它不起作用:

customAdapter.areAllItemsEnabled();
customAdapter.isEnabled(customAdapter.getPosition(plateNumber));

1 个答案:

答案 0 :(得分:0)

再次,我改变了解决方案。 我使用了两个listView而不是一个带有两行的GridView。 并同步他们的运动。 如果你谷歌,你会发现如何同步两个ListView运动。