Я использую список в своем приложении. Я сделал собственный адаптер и использовал шаблон проектирования viewholder. Проблема заключается в том, что когда я прокручиваю список, плавно проводя по его прокрутке, но когда я прокручиваю его, перетаскивая палец быстрой прокрутки, он слишком сильно отстает. Часто зависает на какое-то время. Я проверил другое приложение в своем телефоне, такое как музыкальный проигрыватель по умолчанию, список прокручивается, как ветер, независимо от того, как я его прокручиваю. Я не использую ни одного изображения в списке, только три текстовых изображения в строке.
вот полный код:
public class CustomListViewSongs extends BaseAdapter{
private Context context;
private ArrayList songs, artist, songduration;
private static LayoutInflater inflater = null;
public CustomListViewSongs(Context context, ArrayList songs, ArrayList artist, ArrayList songDuration){
this.context = context;
this.songs = songs;
this.artist = artist;
this.songduration = songDuration;
}
@Override
public int getCount() {
return songs.size();
}
@Override
public Object getItem(int position) {
return songs.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Holder holder;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = convertView;
if(rowView == null){
rowView = inflater.inflate(R.layout.customlistviewsongssinglerow, null);
holder = new Holder();
holder.songTitle = (TextView) rowView.findViewById(R.id.songTitle);
holder.songTitleArtist = (TextView) rowView.findViewById(R.id.songTitleArtist);
holder.songDuration = (TextView) rowView.findViewById(R.id.songDuration);
rowView.setTag(holder);
}else{
holder = (Holder) rowView.getTag();
}
holder.songTitle.setText("" + songs.get(position));
holder.songTitleArtist.setText("" + artist.get(position));
long duration = Long.parseLong("" + songduration.get(position));
int seconds = (int) ((duration / 1000) % 60);
long minutes = ((duration - seconds) / 1000) / 60;
if (seconds < 10) {
holder.songDuration.setText("" + minutes + ":0" + seconds);
} else {
holder.songDuration.setText("" + minutes + ":" + seconds);
}
return rowView;
}
public class Holder {
TextView songTitle, songTitleArtist, songDuration;
int position;
}
}
и список XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:fastScrollEnabled="true"
android:fastScrollAlwaysVisible="false"
android:background="@android:color/transparent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"/>
</RelativeLayout>
и вызывая его:
public class f1 extends Fragment {
private MainActivity f = new MainActivity();
private ListView lv;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.f1, container, false);
populate();
return view;
}
private void populate() {
lv = (ListView) view.findViewById(R.id.listView);
lv.setAdapter(new CustomListViewSongs(getActivity(), f.songs, f.artist, f.songsDuration));
}
}
lv = (ListView) view.findViewById(R.id.listView);
, который увеличивает ваш список? - person George Daramouskas   schedule 01.03.2015