我正在尝试在网格视图中显示动态复选框,但它没有显示文本。它只在我选中/取消选中时突出显示文本。 我知道我的问题与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>
答案 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;
}
}