-- 更新,经过更深入的文档研究,我认为您仍然可以使用ArrayAdapter --
因此,如果您查看
listview的文档,您会看到:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries_array">
<item>Bahrain</item>
<item>Bangladesh</item>
<item>Barbados</item>
<item>Belarus</item>
<item>Belgium</item>
<item>Belize</item>
<item>Benin</item>
</string-array>
</resources>
"并且要加载这些,您可以使用:"
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, countries))
这里的问题是你必须处理确定它们何时到达列表末尾以及如何加载更多数据而不阻塞用户界面。
因此,为了避免很多麻烦,我建议使用
Commonsware无限适配器。像这样做:
import android.app.ListActivity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import com.commonsware.cwac.endless.EndlessAdapter;
import java.util.ArrayList;
public class YourListActivity extends ListActivity {
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.main);
String[] countries = getResources().getStringArray(R.array.countries_array);
setListAdapter(new YourAdapter(countries));
}
class YourAdapter extends EndlessAdapter {
public YourAdapter(String[] list) {
super(new ArrayAdapter<String>(YourAdapter.this,
R.layout.row,
android.R.id.text1,
list));
}
@Override
protected View getPendingView(ViewGroup parent) {
View row=getLayoutInflater().inflate(R.layout.row, null);
return row.findViewById(android.R.id.text1);
}
@Override
protected boolean cacheInBackground() {
SystemClock.sleep(10000);
boolean haveMoreData = true;
return haveMoreData;
}
@Override
protected void appendCachedData() {
ArrayAdapter<String> a=(ArrayAdapter<String>)getWrappedAdapter();
for (int i=0;i<25;i++) {
a.add(a.getCount());
}
}
}
}
}
这是一个类似于您的问题的另一个问题:
Android无限列表
-- 更新:如何将多个字符串数组添加到适配器 --
有多种方法可以实现这一点,最简单的方法可能是使用适配器的add方法。
看看这个:
http://developer.android.com/reference/android/widget/ArrayAdapter.html
并查看add方法。
目前您有一个名为adapter的变量:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, get_msgList);
每当你想向该适配器添加更多数据时,只需调用:
adapter.add("Some new data");
所以,如果你有另一个字符串数组的数据,并且想要将所有数据添加到当前适配器中,只需使用以下代码:
String[] someNewData = getStringArray();
for (String s : someNewData) {
adapter.add(s);
}
“在您添加了新数据后,您可能需要调用adapter.notifyDataSetChanged,但我不确定(这可能会发生在您身上)...我建议您首先尝试不使用它,看看是否一切都按预期工作,如果不行再添加它。”
“现在,您可能想要做的一件事是将adapter变量设置为类的实例变量,以便您可以在类的任何地方使用它。”