В ходе разработки приложения у меня появился вопрос. Так как я, можно сказать, новичок в программировании на андроиде, решить его сам я не смог. Поэтому прошу у вас помощи.
В приложении есть два активити: первое - listview со списком тем, нажимая которые открывается html файл, второе - сам webview просмотр этого файла.
У меня есть исходники этих активити для файлов в папке res/raw, но у меня файлы лежат в assets (перенести в raw не вариант). Помогите, пожалуйста, сделать аналогичные listview, но для файлов из папки assets. Листинги двух активити с raw файлами привожу ниже.
MainActivity
package ru.guide;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
public class MainActivity extends Activity
{
private ListView lv1;
//Создаем массив разделов:
private String lv_arr[]={
"00. Ссылка 1",
"01. Ссылка 2",
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Получим идентификатор ListView
lv1 = (ListView)findViewById(R.id.listView);
//устанавливаем массив в ListView
lv1.setAdapter(
new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
lv1.setTextFilterEnabled(true);
//Обрабатываем щелчки на элементах ListView:
lv1.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
//Позиция элемента, по которому щелкнули
String itemname = new Integer(position).toString();
Intent intent = new Intent();
intent.setClass(MainActivity.this, ViewActivity.class);
Bundle b = new Bundle();
//defStrID содержит строку, которую отправим через itemname в другое Activity
b.putString("defStrID", itemname);
intent.putExtras(b);
//запускаем Intent
startActivity(intent);
}
});
}
}
ViewActivity
package ru.guide;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
public class ViewActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //скрываем заголовок
setContentView(R.layout.view);
//скрываем строку состояния
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Bundle bundle = getIntent().getExtras();
String itemname = "n" + bundle.getString("defStrID"); //получаем строку и формируем имя ресурса
Context context = getBaseContext(); //получаем контекст
//читаем текстовый файл из ресурсов по имени
String text = readRawTextFile(context, getResources().getIdentifier(itemname, "raw", "ru.guide;"));
WebView myWebView = (WebView) findViewById(R.id.webView);
String summary = "<!Doctype html><html><head><meta charset=utf-8></head><body>" + text + "</body></html>";
myWebView.loadData(summary, "text/html", "utf-8"); //загружаем текст в webview
}
public static String readRawTextFile(Context ctx, int resId) //читаем текст из raw
{
InputStream inputStream = ctx.getResources().openRawResource(resId);
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
StringBuilder text = new StringBuilder();
try {
while (( line = buffreader.readLine()) != null) {
text.append(line);
text.append('\n');
}
} catch (IOException e) {
return null;
}
return text.toString();
}
}













