我刚开始从事自己的Android开发工作,基本上是阅读各种书籍,在互联网和论坛上搜索我需要的信息,但似乎我停下来了。我正在尝试创建一个应用程序,通过该应用程序将提示用户在gridview中显示图像列表。单击图像后,应用程序将向用户发送一个活动,该活动将显示从资产文件夹中放置的.txt文件中读取的有时很短的故事。我可以通过简单的方式做到这一点,即。为需要打开的每个.txt创建一个活动,但我在gridview中有50多个图像文件,在assets文件夹中有50多个.txt文件。所以我想只从2个活动中做到这一点,主要是+1,或者尽可能少。下面是我到目前为止的代码。
MainActivity.java
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById (R.id.gridv);
gridview.setAdapter(new ImageAdapter (this));
gridview.setOnItemClickListener (new AdapterView.OnItemClickListener() {
public void onItemClick (AdapterView<?> parent, View v, int position, long id) {
Intent i = new Intent (getApplicationContext(), ChronText.class);
i.putExtra("id", position);
startActivity (i);
}
});
}
}
ChronText.java
public class ChronText extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.flowtext);
Intent i = getIntent();
int position = i.getExtras().getInt("id");
TextView chronview = (TextView) findViewById (R.id.chronview);
AssetManager assetManager = getAssets();
InputStream input;
try {
input = assetManager.open("");
int size = input.available();
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
String text = new String (buffer);
chronview.setText(text);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ImageAdapter.java
public class ImageAdapter extends BaseAdapter {
private Context myContext;
public Integer[] myThumbsId = {
R.drawable.breathingspace,
R.drawable.particletracks,
R.drawable.welcomeparty,
R.drawable.thebookofemptiness2of2,
R.drawable.uplifted
};
public ImageAdapter (Context c) {
myContext = c;
}
public int getCount() {
return myThumbsId.length;
}
public Object getItem (int position) {
return myThumbsId [position];
}
public long getItemId (int position) {
return 0;
}
public View getView (int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView (myContext);
imageView.setLayoutParams(new GridView.LayoutParams(170,111));
imageView.setImageResource(myThumbsId[position]);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 5, 5, 5);
return imageView;
}
}
应用程序有效,但是,我必须在ChronText.java中手动输入文件名
InputStream input;
try {
input = assetManager.open("");
所以基本上,我需要手动为每个被点击的图像写入文件名。有没有办法可以自动完成这件事?如果是,怎么样?我的想法是创建一个包含所有文件名的列表,比如gridview,它包含gridview图像的相应顺序的文件,当用户单击图像时,为具有该文件的文件创建活动文件名列表中的位置与gridview列表中的图像相同。如果有另一种更简单的方法,请告诉/解释。如果我的想法很好,请告诉我如何把它“写在纸上”。我在这个应用程序上工作了几个星期,而且我有点烧坏了。提前致谢。
答案 0 :(得分:0)
经过一个星期左右的头部粉碎,我找到了答案并完成了应用程序。如果有人愿意,我可以显示结果