我是编程新手,所以请解释一下。但我有一些对象,我从parse.com。当我得到一个对象时,我称之为这个方法。但我的问题是,每次调用此方法时,它每次都会替换第一个项目。我知道这是一个简单的解决方案,我只需要一些帮助。
private void display(Object name, Object weightClass, Object record, int count) {
ListView list = (ListView) findViewById(R.id.list);
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
list.setAdapter(listAdapter);
String fightCard = (name).toString();
listAdapter.add(fightCard);
listAdapter.notifyDataSetChanged();
}
另外,我知道这完全是另一个问题,但我知道我需要查找自定义列表视图的方法,我想改变颜色和大小。有谁知道一些很好的链接,以了解如何做到这一点?提前致谢
答案 0 :(得分:2)
首先应在方法之外创建以下内容。
ListView list = (ListView) findViewById(R.id.list);
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
list.setAdapter(listAdapter);
然后将适配器传递给方法
display(name,weightClass,record,count, adapter);
或强>
只需将适配器设置为全局,即可在方法中进行访问。
ArrayAdapter<String> listAdapter;
public void onCreate(Bundle savedInstanceState) {
ListView list = (ListView) findViewById(R.id.list);
listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
list.setAdapter(listAdapter);
//whatever else you want
}
然后在你的方法中:
private void display(Object name, Object weightClass, Object record, int count) {
String fightCard = (name).toString();
listAdapter.add(fightCard);
listAdapter.notifyDataSetChanged();
}
在此之后,每次调用此方法时,数据都将被泵入适配器。
如果你仍然困惑/卡住,请打我。
答案 1 :(得分:1)
考虑更改方法,以便每次返回一个String。 所以它将是:
private String display(Object name, Object weightClass, Object record, int count) {
String fightCard = (name).toString();
return fightCard;
}
然后在onCreate()中:
ListView lv = (ListView) findViewById(R.id.list);
ArrayList<String> your_array_list = new ArrayList<String>();
"loop here -> get each String and add it to list : ( your_array_list.add( fightCard ) ) "
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
lv.setAdapter(arrayAdapter);
一步一步:
1.通过查找布局文件中的id来声明listView项目
2.声明一个用于存储项目的ArrayList
3.将项目添加到您的arraylist。在这里,你可以从一个方法中获取它们,直到你将它们全部添加为止
4.声明ArrayAdapter
5.设置listView背后的数据
答案 2 :(得分:1)
我认为你错过了关于ArrayAdapter
的争论:试试这个:
ArrayList<String> namesArray = new ArrayList<>();
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, namesArray);
每次有新项目时都将其添加到namesArray,然后调用
namesArray.add((name).toString());
listAdapter.notifyDataSetChanged();
因为如果您执行此操作:listAdapter.add(fightCard);
它将继续替换ListView中的现有项目;
希望有所帮助