0

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

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

4

3 回答 3

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();          

}

在此之后,每次调用此方法时,都会将数据泵入适配器。

如果您仍然感到困惑/卡住,请联系我。

于 2013-02-21T23:52:04.290 回答
1

考虑更改方法,使其每次返回一个字符串。所以它将是:

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 后面的数据

于 2013-02-22T00:08:50.230 回答
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 中的现有项目;

希望能帮助到你

于 2013-02-22T00:13:54.037 回答