0

我正在尝试在网格视图中显示动态复选框,但它不显示文本。它仅在我选中/取消选中时突出显示文本。我知道我的问题和Android CheckBox text not displayed一样。但是我没有找到解决它的方法。

这是我的代码。

活动代码:

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>
4

1 回答 1

0

如果您想使用 ArrayAdapter 来显示除简单 TextView 之外的任何内容,请对 ArrayAdapter 进行子类化。

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

这是 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;
    }
}
于 2013-11-08T12:02:41.960 回答