Java Android listview适配器不显示内容
我不知道问题出在哪里,因为一切都很好。没有显示错误或什么也没有。我甚至对适配器数据执行了System.out.println()以获取其计数并显示。问题是,listview没有显示任何内容 这是我的代码:(任何提示/帮助都将非常感谢)需要帮助的适配器是应答\u适配器Java Android listview适配器不显示内容,java,android,listview,adapter,Java,Android,Listview,Adapter,我不知道问题出在哪里,因为一切都很好。没有显示错误或什么也没有。我甚至对适配器数据执行了System.out.println()以获取其计数并显示。问题是,listview没有显示任何内容 这是我的代码:(任何提示/帮助都将非常感谢)需要帮助的适配器是应答\u适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_question);
c = this;
//define view controls
question = (EditText) findViewById(R.id.question);
answers = (ListView) findViewById(R.id.answers);
type = (Spinner) findViewById(R.id.type);
add_choice = (Button) findViewById(R.id.add_choice);
info = (TextView) findViewById(R.id.info);
optional = (CheckBox) findViewById(R.id.optional);
//default data preparation
add_choice.setEnabled(false);
final List<String> types = new ArrayList<>();
types.add("Free Text");
types.add("Free Number");
types.add("Date");
types.add("MultiChoice Text");
types.add("MultiChoice Images");
ArrayAdapter<String> types_adapter = new ArrayAdapter<String>(c,android.R.layout.simple_spinner_item, types);
types_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
type.setAdapter(types_adapter);
type.setSelection(0);
type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selection = types.get(position).trim().toLowerCase();
if (selection.contains("multi")) {
add_choice.setEnabled(true);
} else {
add_choice.setEnabled(false);
}
//reset the answer choices
answers_adapter.clear();
answers_adapter.notifyDataSetChanged();
info.setText("Answer Choices (" + answers_adapter.getCount() + ")");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
type.setSelection(0);
}
});
answers_data = new ArrayList<>(); //Initialize array adapter data
//if this is a question edit, add question info
String editpredata = getIntent().getStringExtra(NewQuestions.EXTRA_MESSAGE);
editpredata_pos = Integer.parseInt(editpredata);
if (editpredata_pos > -1){
CustomListData epcd = NewQuestions.questions_adapter.getItem(editpredata_pos);
String epcd_QJSON = epcd.getMoreinfo();
try {
JSONObject epcdqobj = new JSONObject(epcd_QJSON);
question.setText(epcdqobj.getString("question"));
int types_pos = 0;
for (int i = 0;i<types.size();i++){
String type_str = types.get(i);
if (type_str.trim().toLowerCase().matches(epcdqobj.getString("type").trim().toLowerCase())){
types_pos = i;
}
}
type.setSelection(types_pos);
optional.setChecked(epcdqobj.getString("optional").toLowerCase().trim().matches("yes"));
if (epcdqobj.getString("multichoice_type").trim().length() > 0){
JSONArray epcdmulti = epcdqobj.getJSONArray("multichoices");
for (int i=0;i<epcdmulti.length();i++){
JSONObject spobj = epcdmulti.getJSONObject(i);
CustomListData epcdmcd = new CustomListData();
int epcdmcd_imgpos = isNumeric(spobj.getString("image").trim()) ? Integer.parseInt(spobj.getString("image")) : -1;
epcdmcd.setIcon(epcdmcd_imgpos < 0 ? R.drawable.choice : NewQuestion.ds[epcdmcd_imgpos]);
epcdmcd.setItem(spobj.getString("choice"));
epcdmcd.setDesc(spobj.getString("points"));
epcdmcd.setMoreinfo(spobj.getString("image").trim());
answers_data.add(epcdmcd);
}
}
}
catch (Exception e){
System.out.println("INTERNAL ERROR: --> (PREPARING DATA) " + t.exceptionString(e));
}
}
System.out.println(answers_data.size());
answers_adapter = new CustomListAdapter(((Activity)c), answers_data);
answers.setAdapter(answers_adapter);
answers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
showDialogChoice("", position);
}
});
add_choice.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String selection = type.getSelectedItem().toString().toLowerCase().trim();
if (selection.contains("image")) {
showDialogChoice("image", -1);
} else {
showDialogChoice("", -1);
}
}
});
}
您可以尝试。notiftyDataSetHasInvalidated()仍不工作。。。你能告诉我在哪里实施这个吗?我的新代码显示:answers\u adapter=newcustomlistapter(((活动)c),answers\u data);answers_adapter.notifyDataSetionValidated();也许还可以发布包含ListView UI的布局xml。
public class CustomListData {
private int icon;
private String item;
private String desc;
private String moreinfo;
public CustomListData(){};
public CustomListData(int icon, String item, String desc){
super();
this.icon = icon;
this.item = item;
this.desc = desc;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getItem() {
return item;
}
public void setItem(String item) {
this.item = item;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
public String getMoreinfo() {
return moreinfo;
}
public void setMoreinfo(String moreinfo) {
this.moreinfo = moreinfo;
}
}