###前提・実現したいこと
Listviewの初期化
###発生している問題・エラーメッセージ
読み込み→戻る→読み込み
でListviewの中身が多重化してしまう
###該当のソースコード
java
1package 省略 2 3import 省略 4 5public class SqlLoad extends Activity 6implements View.OnClickListener{ 7 ListView lv; 8 static String[][] list; 9 static String[] Did = new String[2]; 10 static long id_; 11 static String[] Data; 12 static List<DataList> Dlist = new ArrayList<>(); 13 static int sortflg=1; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.sql_load); 19 // final boolean[] flg = new boolean[1]; 20 Button sort = (Button) findViewById(R.id.sort); 21 sort.setOnClickListener(this); 22 23 24 Main(); 25 } 26 27 @Override 28 public void onClick(View v) { 29 switch (v.getId()) { 30 case sort: 31 // Dlist.sort(); 32 //Log.d("tt","a"); 33 Collections.sort(Dlist,new SortComparator()); 34 ListAdapter adapter = new ListAdapter(getApplicationContext(),Dlist); 35 if (sortflg < 2){ 36 sortflg++; 37 }else sortflg = 1; 38 // final Toast toast = Toast.makeText(this,"", Toast.LENGTH_SHORT); 39 lv.setAdapter(adapter); 40 break; 41 } 42 } 43 44 45 public void Main(){ 46 Data = SQLDataGet(); 47 // lv = new ListView(this); 48 // ArrayList<String> Data = new ArrayList<>(Arrays.asList(SQLDataGet())); 49 lv = (ListView)findViewById(R.id.sql_load_main); 50 51 for (String[] aList : list) { 52 DataList dataList = new DataList(); 53 dataList.setTitle(aList[0]); 54 dataList.setContent(aList[1]); 55 dataList.setDate(aList[2]); 56 Dlist.add(dataList); 57 } 58 // ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); 59 60 ListAdapter adapter = new ListAdapter(getApplicationContext(),Dlist); 61 lv.setAdapter(adapter);//リスト表示 62 // setContentView(lv,new ViewGroup.LayoutParams(WC,WC)); 63 64 lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 65 @Override 66 public void onItemClick(AdapterView<?> parent,View view,int position,long id){ 67 // ListView listView = (ListView) parent; 68 // String item = (String)listView.getItemAtPosition(position); 69 Log.d("id",""+id); 70 id_ = id; 71 SQLDContentGet(); 72 SQLDataSet(); 73 finish(); 74 // Toast.makeText(getApplicationContext(),item + "clicked",Toast.LENGTH_LONG).show(); 75 } 76 }); 77 } 78 79 80 81 82 83 public String[] SQLDataGet(){ 84 MainActivity main = new MainActivity(); 85 Context con = this; 86 SQLiteDatabase sdb = main.SQLopen(con.getApplicationContext());//MainActivity参照 87 final String[] columns = new String[]{"title","content","date"};//列名 88 // String where = null;//条件 89 // String[] Args = new String[]{""};//?の置き換え 90 @SuppressLint("Recycle") Cursor c = sdb.query("MemoContents", columns, null, null, null, null, null); 91 int startPostion = c.getPosition(); 92 c.moveToFirst(); 93 // Log.d("DBG",""+c.getCount()); 94 list = new String[c.getCount()][columns.length]; 95 String[] Dlist = new String[c.getCount()]; 96 for (int i = 0; i< list.length; i++){ 97 for (int j = 0; j < list[1].length; j++){ 98 list[i][j] = c.getString(j); 99 Log.d(i+"-"+j,list[i][j]);//デバッグ 100 Dlist[i] = list[i][0]; 101 } 102 c.moveToNext(); 103 } 104 c.moveToPosition(startPostion); 105 106 // finish(); 107 return Dlist; 108 } 109 110 public void SQLDContentGet(){ 111 Did[0] = list[(int)id_][0]; 112 Did[1] = list[(int)id_][1]; 113 } 114 115 public void SQLDataSet(){ 116 Intent data = new Intent(); 117 Bundle bundle = new Bundle(); 118 data.putExtra("key.data",Did); 119 data.putExtras(bundle); 120 setResult(RESULT_OK,data); 121 finish(); 122 } 123 124 @Override 125 public void finish() { 126 super.finish(); 127 } 128} 129 130class ListAdapter extends ArrayAdapter<DataList>{ 131 private LayoutInflater inflater; 132 133 ListAdapter(Context context, List<DataList> objects){ 134 super(context,0,objects); 135 inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 136 } 137 138 @SuppressLint("InflateParams") 139 @NonNull 140 @Override 141 public View getView(final int position, View convertView, @NonNull ViewGroup parent){ 142 if (convertView == null) { 143 convertView = inflater.inflate(R.layout.custom_load_list, null); 144 } 145 final DataList list = this.getItem(position); 146 if (list != null){ 147 TextView title = (TextView) convertView.findViewById(R.id.textView1); 148 title.setText(list.getTitle()); 149 TextView content = (TextView) convertView.findViewById(R.id.textView2); 150 content.setText(list.getContent()); 151 TextView date = (TextView) convertView.findViewById(R.id.textView3); 152 date.setText(list.getDate()); 153 } 154 return convertView; 155 } 156} 157 158class SortComparator implements Comparator<DataList>{ 159 private int a=SqlLoad.sortflg; 160 private int b; 161 @Override 162 public int compare(DataList d1, DataList d2) { 163 switch (a){ 164 case 1: 165 b = Long.parseLong(d1.date) > Long.parseLong(d2.date) ? -1 : 1; 166 break; 167 case 2: 168 a=0; 169 b = Long.parseLong(d1.date) < Long.parseLong(d2.date) ? -1 : 1; 170 break; 171 } 172 Log.d("TestSort",""+a); 173 return b; 174 } 175} 176 177 178
回答4件
あなたの回答
tips
プレビュー