多次使用ListView

时间:2013-02-21 23:30:59

标签: java android listview parse-platform

我是编程新手,所以请解释一下。但我有一些对象,我从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();          
 }

另外,我知道这完全是另一个问题,但我知道我需要查找自定义列表视图的方法,我想改变颜色和大小。有谁知道一些很好的链接,以了解如何做到这一点?提前致谢

3 个答案:

答案 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中的现有项目;

希望有所帮助