我已经成功地将某个类的数组列表(在我的例子中是一个扩展 ArrayAdapter<Question>
的类)转换为 ArrayList<String>
。我已通过 android Intent bundle 传递它并通过 getStringArrayList 方法接收。现在我需要将其转换回 ArrayList<Question>
设置我的适配器
从 ArrayList<Question>
转换至ArrayList<String>
questionlists = task.execute(myitem).get();
for (Question object : questionlists)
{
strings.add(object != null ? object.toString() : null);
}
simpleArray2 = new String[strings.size()];
strings.toArray(simpleArray2);
转换回 ArrayList<Question>
List<Question> variable;
lists = getArguments().getStringArrayList("Question");
variable = (List<Question>)(List<?>) lists;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_world, container, false);
ListView lv = (ListView) view.findViewById(R.id.list_sessions);
final QuestionAdapter adapter = new QuestionAdapter(getActivity(), variable);
lv.setAdapter(adapter);
//ArrayAdapter<String> adapter = new ArrayAdapter<String>(
//inflater.getContext(), android.R.layout.simple_list_item_1,
//lists);
// lv.setAdapter(adapter);
return view;
}
我添加了一个 try/catch 我的适配器,但收到错误:
java.lang.String 无法转换为 java.com.example.Question。
我做错了什么?是因为我没有先转换回正确的ArrayList吗?
最佳答案
在第一个示例中,您实际上并未将 Question
转换为 String
。您正在为 Question
调用 toString()
方法。
例如,
public class Question {
//instance member
String question;
public String toString() {
return question;
}
}
为了从 String
转换为 Question
,您必须编写一个采用 String
的构造函数或方法> 作为参数并返回一个问题
。
例如,您可以将此构造函数添加到您的 Question
类中:
public Question(string myQuestion) {
question = myQuestion;
}
关于java - 将 ArrayList<String> 转换为 ArrayList<SomeClass> java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579740/