Игнорирование части названий файлов в Android studio

170
27 июля 2018, 23:40

У меня есть простой список из listView и массива. При нажатии на элемент списка открываются файлы n0.txt, n1.txt.

В чём собственно проблема: нужно, чтобы андроид студио как бы игнорировал часть названий,что бы можно было писать так n0weapon.txt, n1fuel.txt и т.д? Вот код который какраз таки "выводит txt файлы"

public class activity_stigmata_detail extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stigmata_detail);
        WebView webView = findViewById(R.id.webView);
        Intent intent = getIntent();
        String resName = "n" + intent.getIntExtra("title", 0);
        Log.i("name", resName);
        Context context = getBaseContext();    
        String text = readRawTextFile(context, getResources().getIdentifier(resName,
                "raw", "com.coldgames.honkaiimpact"));
        webView.loadDataWithBaseURL(null, text, "text/html", "UTF-8", null);
    }    
    private String readRawTextFile(Context context, int resId)  {
        InputStream inputStream = context.getResources().openRawResource(resId);
        InputStreamReader inputReader = new InputStreamReader(inputStream);
        BufferedReader buffReader = new BufferedReader(inputReader);
        String line;
        StringBuilder builder = new StringBuilder();
        try {
            while (( line = buffReader.readLine()) != null) {
                builder.append(line);
                builder.append("\n");
            }
        } catch (IOException e) {
            return null;
        }
        return builder.toString();
    }
}
Answer 1

Это конечно велосипед на костылях, но сделать всё же можно, используя рефлексию:

    private static int getRawResId(String prefix) {
        for (Field field : R.raw.class.getFields()) {
            if (field.getName().startsWith(prefix)) {
                try {
                    return field.getInt(null);
                } catch (IllegalAccessException ignored) {}
            }
        }
        return 0;
    }

Естественно при условии, что ресурсы берутся из своего же приложения

READ ALSO
Java. Поиск самого частого символа в файле

Java. Поиск самого частого символа в файле

Недавно изучаю Java, назрел вопрос

186
Статический WebDriver и PageFactory

Статический WebDriver и PageFactory

Структура выглядела примерно так:

193
Не виден метод getFragmentManager

Не виден метод getFragmentManager

Имеется RecyclerViewНеобходимо по нажатию на элемент перейти во фрагмент

199