Android ListActivity行单击

Android ListActivity行单击,android,Android,我有一个显示玩家信息的活动。这部分很好用。(我用了一个适配器)。但是,我应该把在单击行时检测的代码放在哪里呢 PlayersActivity.java package com.democratandchronicle.billstrainingcamp; import android.os.Bundle; public class PlayersActivity extends ListActivity { @Override protected void onCreat

我有一个显示玩家信息的活动。这部分很好用。(我用了一个适配器)。但是,我应该把在单击行时检测的代码放在哪里呢

PlayersActivity.java

package com.democratandchronicle.billstrainingcamp;

import android.os.Bundle;

public class PlayersActivity extends ListActivity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_players);
        PlayersAdapter adapter = new PlayersAdapter(this);
        getListView().setAdapter(adapter);
        PlayersFetchTask loadPlayersTask = new PlayersFetchTask(adapter);
        loadPlayersTask.execute(); 
    }
}
PlayersAdapter.java

package com.democratandchronicle.billstrainingcamp;


import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class PlayersAdapter extends BaseAdapter {

    private Context context;
    private LayoutInflater layoutInflater;
    private JSONArray entries = new JSONArray();
    private DrawableManager dm;
    public PlayersAdapter(Context context) {
        super();
        this.context = context;
        this.layoutInflater = (LayoutInflater) this.context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        this.dm = new DrawableManager();
    }

    @Override
    public int getCount() {
        return this.entries.length();
    }

    @Override
    public Object getItem(int position) {
        try {
            return this.entries.getJSONObject(position);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

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

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

        RelativeLayout playerRowView;

        if (convertView == null)
        {
            playerRowView = (RelativeLayout) this.layoutInflater.inflate(R.layout.player_row, parent, false);
        }
        else
        {
            playerRowView = (RelativeLayout) convertView;
        }

        TextView playerNameText = (TextView) playerRowView.findViewById(R.id.playerName);
        TextView playerPositionText = (TextView) playerRowView.findViewById(R.id.playerPosition);
        ImageView playerImageView = (ImageView) playerRowView.findViewById(R.id.playerImage);

        try 
        {
            JSONObject dataRow = this.entries.getJSONObject(position);
            playerNameText.setText(dataRow.getString("firstName") + " "+ dataRow.getString("lastName"));
            playerPositionText.setText(dataRow.getString("position"));
            if (!dataRow.getString("photo").equals(""))
            {
                this.dm.fetchDrawableOnThread(dataRow.getString("photo"), playerImageView);
            }

        } 
        catch (JSONException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return playerRowView;
    }

    public void upDateEntries(JSONArray entries)
    {
        this.entries = entries;
        this.notifyDataSetChanged();
    }

}
我应该将在单击行时检测的代码放在哪里

要检测行上任何位置的单击,请在活动中使用

要检测每行不同区域中的单击,请在适配器的
getView()
中使用

如果使用ViewHolder方法,还可以创建速度稍快的适配器。Google Talk详细讨论了这一点和其他良好实践


添加


我将如何在我的活动中做到这一点

ListActivities内置了OnListItemClick,回调的名称略有不同:。像这样使用它:

@Override
protected void onListItemClick (ListView l, View v, int position, long id) {
    Toast.makeText(this, "Clicked row " + position, Toast.LENGTH_SHORT).show();
}

在getView方法中..该方法的名称是什么?我试着寻找OnClick或click我该如何在我的活动中做到这一点?我尝试执行getListView().OnItemClickListener,但未找到该方法。在适配器的getView方法中。。获取按钮、图像或任何东西,并实现onClickListener。