2016-12-23 13 views
0

私はチャットアプリケーションを開発しており、一度に10個のメッセージを読み込もうとしています。ユーザーがスクロールすると、さらに10個読み込まれます。したがって、私は下からのメッセージをロードする場合はtrue stackFromBottom =を使用:スクロールのリストビューの負荷(Android)

<ListView 
    android:id="@+id/messagesList" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:transcriptMode="normal" 
    android:stackFromBottom="true"> 

を、ユーザーがトップ(firstVisibleItem == 0、最初のメッセージすなわち)に達したので、私はロードすることができたとき、私は知っているスクロールリスナーを持っていますその他のメッセージ:

スクロールして上に到達すると、さらに10個のメッセージが読み込まれますが、Listviewは自動的に下にスクロールします。通常のチャットアプリケーションのように、Listviewに新しい項目が追加されたときと全く同じ位置にとどまりたい。

これは、メッセージを追加する方法です。

@Override 
protected void onPostExecute(String json) { 

    if(json!=null){ 
     ... 
     //After Parse JSON ... 
     chatMessageAdapter.list.add(0,chatMessage); //add the message to the top of the list 
     chatMessageAdapter.notifyDataSetChanged(); //listview scrolls to the bottom afterwards  
    } 


    loading = false; 
    startApp = false; 

} 

私は他のスレッドでの提案の多くを試みたが、それらのどれも実際に働きました。誰かがここで助けてくれることを願っています

多くのありがとうございます。それ以外の場合は動作しないでしょう、あなたのxmlからtranscriptMode =「ノーマル」:

// save index and top position 
int index = mList.getFirstVisiblePosition(); 
View v = mList.getChildAt(0); 
int top = (v == null) ? 0 : v.getTop(); 

// notify dataset changed or re-assign adapter here 

// restore the position of listview 
mList.setSelectionFromTop(index, top); 

はあなたがアンドロイドを削除する必要が注意してください:私のための仕事をやった

答えて

0

は、ということでした。

関連する問題