下記の方法でスクロールしないListViewを作成しましたが、リストの項目の追加に時間がかかってしまいます。解決策はあるのでしょうか。リストの項目の追加は以下のように行っています。
https://qiita.com/osamu1203/items/a5a0c89a0437a8a00ae5
XML
1<com.example.project.NonScrollListView 2 android:layout_marginTop="20dp" 3 android:id="@+id/listView" 4 android:layout_width="match_parent" 5 android:layout_height="wrap_content" 6 app:layout_constraintTop_toBottomOf="@id/linearLayout" />
Java
1//MainActivity.java 2ArrayList<ListRow> list = new ArrayList<ListRow>(); 3for (int i = 0 ; i<10 ; i++){ 4 list.add(new ListRow("abc","abc",10)); //わかりやすいようにabcというテキストに変更 5} 6ListView listView = findViewById(R.id.listView); 7listView.setAdapter(adapter); 8 9//ListRow.java 10 11package com.XXX; 12 13public class ListRow { 14 15 private String a; 16 private String b; 17 private int c; 18 19 public ListRow(String a, String b, int c) { 20 this.a = a; 21 //同様にb,c 22 } 23 24 25//getter setter 26} 27 28//MyAdapter 29 30package XXX; 31 32import //省略 33 34public class MyAdapter extends BaseAdapter { 35 private LayoutInflater layoutInflater = null; 36 private ArrayList<ListRow> rows; 37 public MyAdapter(Context context) { 38 this.layoutInflater = LayoutInflater.from(context); 39 } 40 public void setList(ArrayList<ListRow> rows) { 41 this.rows = rows; 42 } 43 @Override 44 public int getCount() { 45 return rows.size(); 46 } 47 @Override 48 public Object getItem(int i) { 49 return rows.get(i); 50 } 51 @Override 52 public long getItemId(int i) { 53 return i; 54 } 55 @Override 56 public View getView(int i, View view, ViewGroup viewGroup) { 57 view = layoutInflater.inflate(R.layout.list_layout, viewGroup, false); 58 ListRow row = rows.get(i); 59 ((TextView)view.findViewById(R.id.a)).setText(row.geta()); 60 ((TextView)view.findViewById(R.id.b)).setText(row.getb()); 61 if (row.getProgress()==100){ 62 ((TextView)view.findViewById(R.id.c)).setVisibility(INVISIBLE); 63 ((ProgressBar)view.findViewById(R.id.progressBar)).setVisibility(INVISIBLE); 64 ((CheckBox)view.findViewById(R.id.checkBox)).setChecked(true); 65 } else { 66 ((TextView)view.findViewById(R.id.c)).setText(row.getc()+"%"); 67 ((ProgressBar)view.findViewById(R.id.progressBar)).setProgress(row.getc()); 68 ((CheckBox)view.findViewById(R.id.checkBox)).setChecked(false); 69 } 70 return view; 71 } 72}
こちらの記事の「AdapterやLayoutを独自に実装」を参考にして作っていますので問題が発生するような特殊な方法は使っていないと思います。
あなたの回答
tips
プレビュー