1

我想知道是否有人可以帮助我。我的应用程序中基本上有一个列表视图,它从 lastFM 中提取数据。该行本身链接到艺术家曲目页面,按钮链接到艺术家页面。添加. NullPointer_ artistButton.setOnClickListener(this)有人可以帮助我吗,这实际上是我需要实现的最后一个功能,我很难过。

在此先感谢所有可以提供帮助的人:)

public class TrackDataAdapter extends BaseAdapter implements OnClickListener  {

private static final String debugTag = "TrackDataAdapter";

private Activity activity;
private ArrayList<TrackData> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 


public TrackDataAdapter (TrackActivity a, ArrayList<TrackData> d)
{
    activity = a;
    data = d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
    vi = inflater.inflate(R.layout.trackrow, null);

    TextView artistName=(TextView)vi.findViewById(R.id.artist_name);
    ImageView image=(ImageView)vi.findViewById(R.id.album_icon);
    TextView trackName=(TextView)vi.findViewById(R.id.track_name);
    Button artistButton = (Button)vi.findViewById(R.id.track_button);
    artistName.setText(data.get(position).getArtist());
    trackName.setText(data.get(position).getName());
    imageLoader.DisplayImage(data.get(position).getImageUrl(), image);
    vi.setId(position);
    vi.setOnClickListener(this);
    artistButton.setOnClickListener(this);

    return vi;
}

@Override
public void onClick(View v) {
    Log.d("OnClick", "button clicked");
    if (v instanceof Button) {
        Log.d("OnClick" , "Instance of button type");
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
                Uri.parse(data.get(v.getId()).getArtistUrl()));
        this.activity.startActivity(intent);
    }
    else if (v instanceof View) {
        Log.d("OnClick" , "Instance of button type");
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
                Uri.parse(data.get(v.getId()).getTrackUrl()));
        this.activity.startActivity(intent);
    }
}    
}

这是我的 trackrow.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/background"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/rowselector"
    android:orientation="horizontal" >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:paddingLeft="4dp" >

        <ImageView
            android:id="@+id/album_icon"
            android:layout_width="32dip"
            android:layout_height="32dip"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:scaleType="fitXY"
            android:src="@drawable/blank" >
        </ImageView>

        <TextView
            android:id="@+id/track_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="4dip"
            android:layout_toRightOf="@+id/album_icon"
            android:shadowColor="@color/black"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="0.5"
            android:textColor="#777777"
            android:textStyle="bold" >
        </TextView>

        <TextView
            android:id="@+id/artist_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/track_name"
            android:layout_marginLeft="4dip"
            android:layout_toRightOf="@+id/album_icon"
            android:text="Best Badger: " >
        </TextView>

    <Button
        android:id="@+id/track_button"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:text="Artist" >
    </Button>

    </RelativeLayout>
</RelativeLayout>
4

1 回答 1

0

要查看的行是这样的:

Button artistButton = (Button)vi.findViewById(R.id.track_button);

在此行之后,artistButton 似乎为空。您尝试获取的视图是否有效 (R.id.track_button) ?

于 2013-03-01T23:57:43.803 回答