Android:从gridview打开多个Text文件

时间:2014-03-07 11:13:38

标签: android gridview text-files

我刚开始从事自己​​的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列表中的图像相同。如果有另一种更简单的方法,请告诉/解释。如果我的想法很好,请告诉我如何把它“写在纸上”。我在这个应用程序上工作了几个星期,而且我有点烧坏了。提前致谢。

1 个答案:

答案 0 :(得分:0)

经过一个星期左右的头部粉碎,我找到了答案并完成了应用程序。如果有人愿意,我可以显示结果