如何从SD卡中检索文本并相应地设置文本视图?

时间:2011-05-30 09:52:50

标签: android android-gridview

我正在使用gridview和layout inflater来显示带有文本的图标。

我指的是:http://mytelcoit.com/2010/02/programming-android-create-icon-with-text-using-gridview-and-layout-inflater/上给出的代码,但区别在于图像和文本都存储在sdcard中。它应该是这样的:

enter image description here

我的文本文件包含以下数据:

Profile 0|Profile 1|Profile 2

我正在使用以下代码:

    public View getView(final int position, View convertView, ViewGroup parent) {
        View v;
        //String text;
        final ImageView picturesView;
        if (convertView == null) {
            LayoutInflater li = getLayoutInflater();
            v = li.inflate(R.layout.icon, null);
            File sdcard = Environment.getExternalStorageDirectory();
            File file = new File(sdcard,"string.txt");
            //StringBuilder stext = new StringBuilder();
            TextView tv = (TextView)v.findViewById(R.id.icon_text);
            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String line;

                while ((line = br.readLine()) != null) {
                    String[] columns = line.split("\\|");
                    for (String name : columns){ 

                       tv.setText(name);
                    }

                    //stext.append(line);
                    //stext.append('\n');
                }
            }
            catch (IOException e) {
                //You'll need to add proper error handling here
            }


            tv.setTextSize(12);
            tv.setTextColor(Color.BLACK);              

        }
        else {
            v = convertView;
        }

}

我想用字符串值

设置文本视图
TextView tv = (TextView)v.findViewById(R.id.icon_text);
tv.setText();

我尝试通过Toast.makeText(SDCardImagesActivity.this, ""+columns.length, Toast.LENGTH_LONG).show();检查列长度,但显示的是1(5次)

我很困惑如何在tv.setText中使用列值以及列数组是否正确。

请帮我解决这个问题

由于

的Pankaj

4 个答案:

答案 0 :(得分:1)

查看您引用的代码

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v;
        if(convertView==null){
            LayoutInflater li = getLayoutInflater();
            v = li.inflate(R.layout.icon, null);
            TextView tv = (TextView)v.findViewById(R.id.icon_text);
            tv.setText("Profile "+position);
            ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
            iv.setImageResource(R.drawable.icon);
        }
        else
        {
            v = convertView;
        }
        return v;
    }

而不是这一行...

tv.setText("Profile "+position);

...使用以下内容......

tv.setText(columns[position]);

答案 1 :(得分:0)

将每个文件行的内容存储在columns-array中。 您应该存储此数据以供日后使用,或者在循环中立即设置文本。

答案 2 :(得分:0)

请尝试使用以下代码设置TextView

File sdcard = Environment.getExternalStorageDirectory();
    File file = new File(sdcard,"string.txt");



    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;

        while ((line = br.readLine()) != null) {


            String delimiter = "\\|";

            String[] columns = line.split(delimiter);
            for (String name : columns){ 

                tv.setText(name);
            }

        }
    }
    catch (Exception e) {
        //You'll need to add proper error handling here
        e.printStackTrace();
    }

由于 迪帕克

答案 3 :(得分:0)

您可以在不创建TextView和ImageVIew的情况下创建上述视图。只需创建一个按钮并使用drawableTop。如果要根据图像设置配置文件名称。如果button1然后button.settext("Profile1")就像这样创建条件语句。

<Button 
  android:id="@+id/openpdfbutton"
  android:layout_width="100dip"
  android:layout_height="60dip"
  android:text="Click"

  android:tag="@drawable/cancelfocus"
  android:drawableTop="@drawable/cancelfocus"
  />

由于 迪帕克