获取java.io.FileNotFoundException

时间:2015-04-23 04:56:30

标签: android android-assets

我在assets文件夹的子文件夹中有四个文件。我写了这段代码

 @Override
public View getView(final int position, View convertView, ViewGroup parent) {

    if (convertView == null){
        convertView = LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);
    }
    final TextView textView1 = (TextView) convertView.findViewById(R.id.textView1);
    final TextView textView2 = (TextView) convertView.findViewById(R.id.textView2);
    final Button show = (Button) convertView.findViewById(R.id.show1);
    final Button hide = (Button) convertView.findViewById(R.id.hide1);

    textView1.setText(data[position]);

    show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            show.setVisibility(View.INVISIBLE);
            hide.setVisibility(View.VISIBLE);

            try{

                Resources resources = getResources();
                AssetManager assetManager = resources.getAssets();
                String fileList[] = assetManager.list("latest_trials");

                if (fileList != null){
                    for (int i = 0; i < fileList.length; i++){
                        Log.v("Files", fileList[i]);
                    }
                }

                InputStream inputStream;
                    try{
                        inputStream = assetManager.open(fileList[position]);
                        byte[] buffer = new byte[inputStream.available()];
                        inputStream.read(buffer);

                        String value = new String(buffer);
                        textView2.setMaxLines(Integer.MAX_VALUE);
                        textView2.setVisibility(View.VISIBLE);
                        textView2.setText(value);
                    }catch (IOException e){
                        e.printStackTrace();
                    }

            }catch (IOException e){
                e.printStackTrace();
            }


        }
    });

所有文件都列出正确,并希望在listview中的textview中显示文件内容,但不读取文件并显示FileNotFoundException。请一些帮助..

1 个答案:

答案 0 :(得分:0)

一旦你的getview结束,那么位置值就会变成最后一个值。如果你点击它,它将始终指向最后一个值。 因此,按setTag()按钮标记位置,然后按getTag()

进行点击

只需调试并检查fileList[]的最后一个值是什么。

做这样的事情 -

show.setTag(position)
 show.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         int pos = Integer.parseInt(v.getTag());