2013-09-29 49 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);並且它按預期工作。
感謝@丹特幫助我。