Android应用中找不到资源错误

时间:2013-11-18 20:54:35

标签: android textview custom-adapter

我在我正在玩的应用中遇到资源未找到问题,视图中存在id,并且正在使用正确的视图。我删除了R文件并重新生成但没有帮助。它编译并显示资源被找到但在运行时它在尝试在textview中设置文本时出错。希望有人可以指出造成这种情况的原因。

以下是适配器代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    SongHolder songHolder = null;

    if(row == null)
    {
        LayoutInflater inflater = ((Activity)mContext).getLayoutInflater();
        row = inflater.inflate(mLayoutResourceId, parent, false);

        songHolder = new SongHolder();
        songHolder.txtSongId = (TextView)row.findViewById(R.id.songid);
        songHolder.txtName = (TextView)row.findViewById(R.id.name);
        songHolder.txtArtist = (TextView)row.findViewById(R.id.artist);
        songHolder.txtAlbum = (TextView)row.findViewById(R.id.album);
        songHolder.txtNotes = (TextView)row.findViewById(R.id.notes);

        row.setTag(songHolder);
    }
    else
    {
        songHolder = (SongHolder)row.getTag();
    }

    ClassSong song = mSongs.get(position);
    //###############THE FOLLOWING LINE IS WHERE THE ERROR OCCURS###############
    songHolder.txtSongId.setText(song.getSongID());
    songHolder.txtName.setText(song.getName());
    songHolder.txtArtist.setText(song.getArtist());
    songHolder.txtAlbum.setText(song.getAlbum());
    songHolder.txtNotes.setText(song.getNotes());

    if(song.getAlbum() == "" || song.getAlbum() == null)
        songHolder.txtAlbum.setVisibility(View.GONE);
    else 
        songHolder.txtAlbum.setVisibility(View.VISIBLE);

    if(song.getNotes() == "" || song.getNotes() == null)
        songHolder.txtNotes.setVisibility(View.GONE);
    else 
        songHolder.txtNotes.setVisibility(View.VISIBLE);
    return row;
} 

视图的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gat"
android:padding="0dip">

<LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@+id/name" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:textColor="#FFFFFF"
        android:textSize="18sp"/>
    <TextView android:id="@+id/songid"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:visibility="gone"
        android:textColor="#FFFFFF"
        android:textSize="18sp"/>
    <TextView android:id="@+id/artist" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:textColor="#517789"
        android:textSize="15sp"/>

    <TextView android:id="@+id/album" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:textColor="#517789"
        android:textSize="12sp"/>
</LinearLayout>

<LinearLayout android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@+id/notes" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#517789"
        android:textSize="12sp"/>
</LinearLayout>

</LinearLayout>

以及调用适配器的list活动中的代码:

private void fillData() {

    ClassSong song = new ClassSong(this);
    ClassSongListAdapter adapter = new ClassSongListAdapter(this, R.layout.song_row, song.getAllSongs(this));
    setListAdapter(adapter);



}

此外,当在持有者中拾取视图时,它被找到并且具有明显不为空的值。所以看起来在添加到视图持有者时会找到textview,但是当我尝试为其设置值时却没有找到它,如果我注释掉了songid行,则其他任务工作正常。有人有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

我认为,歌曲ID是一个整数:然后将其转换为字符串,你会没事的:

songHolder.txtSongId.setText(song.getSongID()+"");

说明:有两个setText()方法,一个期望String参数,用于直接设置文本,另一个,期望int参数实际上期望资源ID像R.string.app_name如果您的歌曲ID是一个整数,您会意外地调用期望资源ID的更高版本,因此会出错。