投稿後のリフレッシュでぬるぽが出る場合がある問題の修正

This commit is contained in:
tateisu 2017-05-05 18:12:08 +09:00
parent c6220f195a
commit f8376f4260
3 changed files with 45 additions and 41 deletions

View File

@ -1005,7 +1005,6 @@ class Column {
case TYPE_FAVOURITED_BY: case TYPE_FAVOURITED_BY:
return parseAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) ); return parseAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) );
case TYPE_CONVERSATION: case TYPE_CONVERSATION:
// 指定された発言そのもの // 指定された発言そのもの
@ -1647,8 +1646,6 @@ class Column {
case TYPE_FAVOURITED_BY: case TYPE_FAVOURITED_BY:
return getAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) ); return getAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) );
case TYPE_PROFILE: case TYPE_PROFILE:
if( who_account == null ){ if( who_account == null ){
parseAccount1( client.request( parseAccount1( client.request(
@ -1766,8 +1763,8 @@ class Column {
if( bBottom ){ if( bBottom ){
list_data.addAll( list_new ); list_data.addAll( list_new );
fireShowContent(); fireShowContent();
if( holder != null ){
//noinspection ConstantConditions if( sp != null ){
holder.setScrollPosition( sp, 20f ); holder.setScrollPosition( sp, 20f );
} }
}else{ }else{
@ -1792,22 +1789,19 @@ class Column {
if( status_index >= 0 && refresh_after_toot == Pref.RAT_REFRESH_SCROLL ){ if( status_index >= 0 && refresh_after_toot == Pref.RAT_REFRESH_SCROLL ){
if( holder != null ){ if( holder != null ){
//noinspection ConstantConditions holder.setScrollPosition( new ScrollPosition( status_index, 0 ), 0f );
sp.pos = status_index;
sp.top = 0;
holder.setScrollPosition( sp, 0f );
}else{ }else{
scroll_save.pos = status_index; scroll_save = new ScrollPosition( status_index, 0 );
scroll_save.top = 0;
} }
}else{ }else{
float delta = bSilent ? 0f : - 20f; float delta = bSilent ? 0f : - 20f;
if( holder != null ){ if( sp != null ){
//noinspection ConstantConditions
sp.pos += added; sp.pos += added;
holder.setScrollPosition( sp, delta ); holder.setScrollPosition( sp, delta );
}else{ }else if ( scroll_save != null ){
scroll_save.pos += added; scroll_save.pos += added;
}else{
scroll_save = new ScrollPosition( added,0 );
} }
} }
} }
@ -2085,7 +2079,6 @@ class Column {
case TYPE_FAVOURITED_BY: case TYPE_FAVOURITED_BY:
return getAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) ); return getAccountList( client, String.format( Locale.JAPAN, PATH_FAVOURITED_BY, status_id ) );
case TYPE_MUTES: case TYPE_MUTES:
return getAccountList( client, PATH_MUTES ); return getAccountList( client, PATH_MUTES );
@ -2207,9 +2200,11 @@ class Column {
if( holder != null ){ if( holder != null ){
setItemTop( restore_idx + added - 1, restore_y ); setItemTop( restore_idx + added - 1, restore_y );
}else{ }else{
if( scroll_save != null ){
scroll_save.pos += added - 1; scroll_save.pos += added - 1;
} }
} }
}
}; };
AsyncTaskCompat.executeParallel( task ); AsyncTaskCompat.executeParallel( task );

View File

@ -460,11 +460,11 @@ class ColumnViewHolder
} }
private void saveScrollPosition(){ private void saveScrollPosition(){
column.scroll_save = null;
if( listView.getVisibility() == View.VISIBLE ){ if( listView.getVisibility() == View.VISIBLE ){
if( listView.getChildCount() > 0 ){
column.scroll_save = new ScrollPosition( listView ); column.scroll_save = new ScrollPosition( listView );
} }else{
column.scroll_save = new ScrollPosition( 0,0 );
} }
} }

View File

@ -4,10 +4,19 @@ public class ScrollPosition {
public int pos; public int pos;
public int top; public int top;
public ScrollPosition( int pos,int top ){
this.pos = pos;
this.top = top;
}
public ScrollPosition( MyListView listView ){ public ScrollPosition( MyListView listView ){
if( listView.getChildCount() == 0 ){
pos = top = 0;
}else{
pos = listView.getFirstVisiblePosition(); pos = listView.getFirstVisiblePosition();
top = listView.getChildAt( 0 ).getTop(); top = listView.getChildAt( 0 ).getTop();
} }
}
public void restore( MyListView listView ){ public void restore( MyListView listView ){
if( 0 <= pos && pos < listView.getAdapter().getCount() ){ if( 0 <= pos && pos < listView.getAdapter().getCount() ){