Android 将数据追加到列表中
我在建议列表中显示来自两个不同API调用的数据,所以我在onQueryTextChange()中调用了两个API。因为我从两个不同的API调用中得到响应,所以我使用addAll()来追加来自不同API的响应。但数据并没有被添加,列表的大小为零。但如果我使用Android 将数据追加到列表中,android,list,android-listview,Android,List,Android Listview,我在建议列表中显示来自两个不同API调用的数据,所以我在onQueryTextChange()中调用了两个API。因为我从两个不同的API调用中得到响应,所以我使用addAll()来追加来自不同API的响应。但数据并没有被添加,列表的大小为零。但如果我使用searchResponses=(list)response然后数据被添加到列表中,但没有附加两个不同的响应。我哪里出错了 @Override public boolean onQueryTextChange(Stri
searchResponses=(list)response代码>然后数据被添加到列表中,但没有附加两个不同的响应。我哪里出错了
@Override
public boolean onQueryTextChange(String s)
{
if(s.length()>=1) {
String mStart = "";
int mCount = 10;
String[] columnNames = {"_id", "name", "userImage", "location"};
final String[] temp = new String[4];
final MatrixCursor cursor = new MatrixCursor(columnNames);
SearchAPI.getSearchFeed(getApplicationContext(), s, mStart, mCount, mSettingsManager.getInstance().getAccessToken(), new APIResponseListener() {
@Override
public void onResponse(Object response) {
searchResponses.addAll((List<UserVideo>) response);
for (UserVideo searchResponse :searchResponses)
{searchResponse.setIsVideo(true);
temp[0] = Long.toString(id++);
temp[1] = searchResponse.getCaption();
temp[3] = searchResponse.getLocation();
cursor.addRow(temp);
}
mSearchView.setSuggestionsAdapter(new SearchListAdapter(HomeActivity.this, cursor));
}
@Override
public void onError(VolleyError error) {
if (error instanceof NoConnectionError) {
}
}
});
SearchAPI.getSearchUser(getApplicationContext(), s,mSettingsManager.getInstance().getAccessToken(), new APIResponseListener() {
@Override
public void onResponse(Object response)
{
searchResponses.addAll((List<UserVideo>) response);
for (UserVideo searchResponse :searchResponses) {
searchResponse.setIsVideo(false);
temp[0] = Long.toString(id++);
temp[1] = searchResponse.getUserName2();
temp[3] = searchResponse.getName();
cursor.addRow(temp);
}
mSearchView.setSuggestionsAdapter(new SearchListAdapter(HomeActivity.this, cursor));
}
@Override
public void onError(VolleyError error)
{
if (error instanceof NoConnectionError) {
}
}
});
}
return true;
}
@覆盖
公共布尔值onQueryTextChange(字符串s)
{
如果(s.长度()>=1){
字符串mStart=“”;
int mCount=10;
String[]columnNames={“\u id”,“name”,“userImage”,“location”};
最终字符串[]临时=新字符串[4];
最终MatrixCursor游标=新MatrixCursor(列名称);
SearchAPI.getSearchFeed(getApplicationContext(),s,mStart,McCount,mSettingsManager.getInstance().getAccessToken(),new-APIResponseListener()){
@凌驾
公共响应(对象响应){
searchResponses.addAll((列表)响应);
for(UserVideo searchResponse:searchResponses)
{searchResponse.setIsVideo(true);
temp[0]=Long.toString(id++);
temp[1]=searchResponse.getCaption();
temp[3]=searchResponse.getLocation();
cursor.addRow(temp);
}
mSearchView.SetSuggestionAdapter(新的SearchListAdapter(HomeActivity.this,游标));
}
@凌驾
公共无效onError(截击错误){
if(错误实例of NoConnectionError){
}
}
});
SearchAPI.getSearchUser(getApplicationContext(),s,mSettingsManager.getInstance().getAccessToken(),新的APIResponseListener(){
@凌驾
公共响应(对象响应)
{
searchResponses.addAll((列表)响应);
for(UserVideo searchResponse:searchResponses){
searchResponse.setIsVideo(false);
temp[0]=Long.toString(id++);
temp[1]=searchResponse.getUserName2();
temp[3]=searchResponse.getName();
cursor.addRow(temp);
}
mSearchView.SetSuggestionAdapter(新的SearchListAdapter(HomeActivity.this,游标));
}
@凌驾
公共无效onError(截击错误)
{
if(错误实例of NoConnectionError){
}
}
});
}
返回true;
}
根据DavidJohns的回答更新-
public boolean onQueryTextChange(String s)
{
if(s.length()>=0) {
String mStart = "";
int mCount = 10;
String[] columnNames = {"_id", "name", "userImage", "location"};
final String[] temp = new String[4];
final MatrixCursor cursor = new MatrixCursor(columnNames);
SearchAPI.getSearchFeed(getApplicationContext(), s, mStart, mCount, mSettingsManager.getInstance().getAccessToken(), new APIResponseListener() {
@Override
public void onResponse(Object response) {
searchResponses= (List<UserVideo>) response;
for (UserVideo searchResponse :searchResponses)
{
searchResponse.setIsVideo(true);
temp[0] = Long.toString(id++);
temp[1] = searchResponse.getCaption();
temp[2] = searchResponse.getUserId();
temp[3] = searchResponse.getLocation();
cursor.addRow(temp);
}
mSearchView.setSuggestionsAdapter(new SearchListAdapter(HomeActivity.this, cursor));
}
@Override
public void onError(VolleyError error) {
if (error instanceof NoConnectionError) {
}
}
});
SearchAPI.getSearchUser(getApplicationContext(), s,mSettingsManager.getInstance().getAccessToken(), new APIResponseListener() {
@Override
public void onResponse(Object response)
{
searchUserResponses= (List<UserVideo>) response;
for (UserVideo searchResponse :searchUserResponses) {
searchResponse.setIsVideo(false);
temp[0] = Long.toString(id++);
temp[1] = searchResponse.getUserName2();
temp[2] = searchResponse.getUserId();
temp[3] = searchResponse.getName();
searchResponses.add(searchResponse);
cursor.addRow(temp);
}
mSearchView.setSuggestionsAdapter(new SearchListAdapter(HomeActivity.this, cursor));
}
@Override
public void onError(VolleyError error)
{
if (error instanceof NoConnectionError) {
}
}
});
}
return true;
}
@Override
public boolean onSuggestionClick(int i)
{
if((searchResponses!=null)&&(searchResponses.get(i).getIsVideo()))
{
UserVideo searchResponse = searchResponses.get(i);
setSearchVideoToShow(searchResponse);
switchFragment(HomeActivity.FRAGMENT_VIDEO_SEARCH, false, "Video Details");
}
else if((searchResponses!=null)&&(!searchResponses.get(i).getIsVideo()))
{
mSingleClickHandle.put(ENABLE_FRAGMENT_SEARCH_VIEW, false);
setUserIdToShow(searchResponses.get(i).getUserId2());
closeDrawer();
switchFragment(HomeActivity.FRAGMENT_PROFILE_VIEW, false, "video");
}
return true;
}
public boolean onQueryTextChange(字符串s)
{
如果(s.length()>=0){
字符串mStart=“”;
int mCount=10;
String[]columnNames={“\u id”,“name”,“userImage”,“location”};
最终字符串[]临时=新字符串[4];
最终MatrixCursor游标=新MatrixCursor(列名称);
SearchAPI.getSearchFeed(getApplicationContext(),s,mStart,McCount,mSettingsManager.getInstance().getAccessToken(),new-APIResponseListener()){
@凌驾
公共响应(对象响应){
searchResponses=(列表)响应;
for(UserVideo searchResponse:searchResponses)
{
searchResponse.setIsVideo(true);
temp[0]=Long.toString(id++);
temp[1]=searchResponse.getCaption();
temp[2]=searchResponse.getUserId();
temp[3]=searchResponse.getLocation();
cursor.addRow(temp);
}
mSearchView.SetSuggestionAdapter(新的SearchListAdapter(HomeActivity.this,游标));
}
@凌驾
公共无效onError(截击错误){
if(错误实例of NoConnectionError){
}
}
});
SearchAPI.getSearchUser(getApplicationContext(),s,mSettingsManager.getInstance().getAccessToken(),新的APIResponseListener(){
@凌驾
公共响应(对象响应)
{
searchUserResponses=(列表)响应;
for(UserVideo searchResponse:searchUserResponses){
searchResponse.setIsVideo(false);
temp[0]=Long.toString(id++);
temp[1]=searchResponse.getUserName2();
temp[2]=searchResponse.getUserId();
temp[3]=searchResponse.getName();
searchResponse.add(searchResponse);
cursor.addRow(temp);
}
mSearchView.SetSuggestionAdapter(新的SearchListAdapter(HomeActivity.this,游标));
}
@凌驾
公共无效onError(截击错误)
{
if(错误实例of NoConnectionError){
}
}
});
}
返回true;
}
@凌驾
公共布尔onSuggestionClick(int i)
{
if((searchResponses!=null)&&(searchResponses.get(i).getIsVideo())
for(int i = 0; i < searchFeedList.size() ; i ++)
{
searchResponses.add(searchFeedList.get(i);
}
int totalSoze = searchFeedList.size() + searchUserList.size();
for(int j = searchFeedList.size(); j < totalSoze.size() ; j ++)
{
searchResponses.add(searchUserList.get(j);
}