package me.bello.rkenword;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.GridView;
import androidx.appcompat.app.AppCompatActivity;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import me.bello.rkenword.adapter.CharAdapter;
import me.bello.rkenword.data.MainData;
public class EnglishActivity extends AppCompatActivity {
private Context context;
private GridView mGridView;
private CharAdapter adapter;
// 大集合
ArrayList<MainData> mainList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_english);
context = this;
mGridView = findViewById(R.id.grid_view);
adapter = new CharAdapter(context, mainList);
mGridView.setAdapter(adapter);
readCSVFile();
adapter.notifyDataSetChanged();
}
private void readCSVFile() {
// 从csv中获取的词条
ArrayList<HashMap<String, String>> strList = new ArrayList<>();
// 首字母
List<String> firstCharList = new ArrayList<>();
InputStreamReader is = null;
try {
// 判断是否有SD上的文件
File f = new File(Environment.getExternalStorageDirectory(), "en.CSV");
if (f.exists()){
is = new InputStreamReader(new FileInputStream(f), "GBK");
} else {
is = new InputStreamReader(getAssets().open("en.CSV"), "GBK");
}
BufferedReader reader = new BufferedReader(is);
String line;
while ((line = reader.readLine()) != null){
Log.d("line --> ", line);
// 取词条
HashMap<String, String> map = new HashMap<>();
String[] spt = line.split(",");
if (spt.length != 3){
if (spt[0].startsWith("\"")){
map.put("w", (spt[0]+", "+spt[1]).replace("\"", "")); // word
map.put("s", spt[2]); // simple
map.put("c", spt[3]); // chinese
map.put("o", "0"); // open
} else {
map.put("w", spt[0]);
map.put("s", spt[1]);
map.put("c", (spt[2]+", "+spt[3]).replace("\"", ""));
map.put("o", "0");
}
} else {
map.put("w", spt[0]);
map.put("s", spt[1]);
map.put("c", spt[2]);
map.put("o", "0");
}
strList.add(map);
// 取首字母
String w = map.get("w").substring(0, 1).toUpperCase();
boolean exsit = false;
for (int i = 0; i < firstCharList.size(); i++) {
if (w.equals(firstCharList.get(i))){
exsit = true;
}
}
if (!exsit) {
firstCharList.add(w);
}
}
// 首字母排序
Collections.sort(firstCharList);
// 开始组合成大集合
// 先插入首字母
for (int i = 0; i < firstCharList.size(); i++) {
MainData data = new MainData();
data.setFirstChar(firstCharList.get(i));
data.setCharList(new ArrayList<>());
mainList.add(data);
}
// 遍历词条
for (int i = 0; i < strList.size(); i++) {
String first = strList.get(i).get("w").substring(0, 1).toUpperCase();
for (int j = 0; j < mainList.size(); j++) {
if (first.equals(mainList.get(j).getFirstChar())){
mainList.get(j).getCharList().add(strList.get(i));
}
}
}
// System.out.println(mainList);
} catch (Exception e){
System.out.println(e);
}
}
}