2013-09-29 47 views
0

我正在使用RefreshableListView(拉刷新)从here。但我使用自定义ListAdapter而不是ArrayAdapter。它工作正常,但唯一的问题是它将新项目添加到列表的底部,而我希望新项目显示在上面。。 我在网上提到了很多关于类似问题的文章,但还没有找到解决我的问题的方法。如果有人能指出我出错的地方,那将非常棒。添加列表视图项到Android的顶部拉刷新刷新列表查看

以下是代码片段:

public void onCreate(Bundle savedInstanceState) { 
final CustomAdapter adapter = new CustomAdapter(this, R.layout.mylist, mItems); 

    mListView = (RefreshableListView) findViewById(R.id.listview); 
    mListView.setAdapter(adapter); 

    // Callback to refresh the list 
    mListView.setOnRefreshListener(new OnRefreshListener() { 
     @Override 
     public void onRefresh(RefreshableListView listView) { 
      ivFooter.setImageResource(R.drawable.back); 
      new NewDataTask().execute(); 
     } 
    }); 
} 

和的AsyncTask

private class NewDataTask extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
     } 
     String retVal = myArrayList.get(i); 
     if (i < myArrayList.size() - 1) { 
      i++; 
     } else { 
      i = 0; 
     } 
     return retVal; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     mItems.add(0, result); 
     mListView.completeRefreshing(); 
     super.onPostExecute(result); 

    } 
} 

和自定义适配器类

class CustomAdapter extends BaseAdapter { 

    public int getCount() { 
     return mItems.size(); 
    } 


    public Object getItem(int position) { 
     return mItems.get(position); 
    } 


    public long getItemId(int position) { 
     return position; 
    } 


    public boolean areAllItemsEnabled() { 
     return false; 
    } 


    public boolean isEnabled(int position) { 
     return false; 
    } 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.mylist, null); 
     } 
     String quote = myArrayList.get(position); 
     if (quote != null) { 
      TextView tt = (TextView) v.findViewById(R.id.tvQuote); 
      ImageView iv = (ImageView) v.findViewById(R.id.ivPicture); 
      if (tt != null) { 
       tt.setText(quote); 
      } 
      if (iv != null) { 
//Setting image 
} 
return v; 
} 

'mItems' 是原单个项目的列表和我我正在给它添加'myArrayList'。 就像我说的工作正常,但添加元素(在刷新)一个接一个在底部..而我想新的元素被添加在上面。任何输入都会有很大的帮助。

在此先感谢。

回答

0

String quote = myArrayList.get(position);替换为String quote = RefreshableListViewActivity.this.mItems.get(position);并且它按预期工作。
感谢@丹特帮助我。