У меня есть простой список из 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();
}
}
Это конечно велосипед на костылях, но сделать всё же можно, используя рефлексию:
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;
}
Естественно при условии, что ресурсы берутся из своего же приложения
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется RecyclerViewНеобходимо по нажатию на элемент перейти во фрагмент