复选框不在gridview中显示文本

时间:2013-11-08 11:45:02

标签: android android-layout

我正在尝试在网格视图中显示动态复选框,但它没有显示文本。它只在我选中/取消选中时突出显示文本。 我知道我的问题与Android CheckBox text not displaying相同。但我没有找到解决问题的方法。

这是我的代码。

活动代码:

try {
    JSONArray JA = new JSONArray(result3);// result3 is response from
                                            // server
    JSONObject json = null;
    final String[] str3 = new String[JA.length()];
    for (int i = 0; i < JA.length(); i++) {
        json = JA.getJSONObject(i);
        str3[i] = json.getString("name");
    }

    ArrayAdapter<String> adp3 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_multiple_choice, str3);
    GridView gridView = (GridView) findViewById(R.id.name);
    gridView.setAdapter(adp3);

} catch (Exception e) {
    Log.e("Fail 3", e.toString());
}

布局XML:

<GridView android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:numColumns="auto_fit"
        android:choiceMode="multipleChoice"
        ></GridView>

1 个答案:

答案 0 :(得分:0)

如果要使用ArrayAdapter显示除简单TextView以外的任何内容,则对其进行子类化。

然后,您可以在自定义适配器的GetView()方法中初始化View。

这是ArrayAdapter基本子类的一个例子。

public class CustomAdapter extends ArrayAdapter<String>
{
    private LayoutInflater inflater;
    private int resourceId;
    private List<String> data;

    public CustomAdapter(Context context, int resourceId, List<String> data)
    {
        super(context, resourceId, data);
        inflater = LayoutInflater.from(context);
        this.resourceId = resourceId;
        this.data = data;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent)
    {
        if (view == null)
            view = inflater.inflate(resourceId, null);
        String data_item = (String) ((ListView) parent).getItemAtPosition(position);
        CheckBox checkBox = ((CheckBox) view.findViewById(R.id.check_box));
        // Do your thing
        return view;
    }
}