Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击自定义listview按钮时启动活动_Android_Listview - Fatal编程技术网

Android 单击自定义listview按钮时启动活动

Android 单击自定义listview按钮时启动活动,android,listview,Android,Listview,我正在开发一个调用web服务并将结果加载到列表视图的应用程序。实际上,我的列表视图有两个按钮和一个图像视图。我使用了一个自定义的列表适配器类,它是extends BaseAdapter。现在,我只使用Toast消息来标识列表项[按钮和列表背景]上的单击事件。当我在列表视图中按下一个按钮时,我想开始一个新的活动。我该怎么做?我尝试在onclick侦听器中调用启动活动方法。但是它不起作用 这是我的适配器类 public class NewsRowAdapter extends BaseAdapter

我正在开发一个调用web服务并将结果加载到列表视图的应用程序。实际上,我的列表视图有两个按钮和一个图像视图。我使用了一个自定义的列表适配器类,它是extends BaseAdapter。现在,我只使用Toast消息来标识列表项[按钮和列表背景]上的单击事件。当我在列表视图中按下一个按钮时,我想开始一个新的活动。我该怎么做?我尝试在onclick侦听器中调用启动活动方法。但是它不起作用

这是我的适配器类

public class NewsRowAdapter extends BaseAdapter  {

private Context mContext;

public NewsRowAdapter (Context ctx) {
    mContext = ctx;
}


private Activity activity;
private static LayoutInflater inflater=null;
private ArrayList<HashMap<String, String>> data;
int resource;
    //String response;
    //Context context;
    //Initialize adapter
    public NewsRowAdapter(Activity act, int resource,ArrayList<HashMap<String, String>> d) {
        super();
        this.resource=resource;
        this.data = d;
        this.activity = act;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }





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


    View vi = convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.row,null);

        TextView firstname = (TextView) vi.findViewById(R.id.fname);
        TextView lastname = (TextView) vi.findViewById(R.id.lname);
        TextView startTime = (TextView) vi.findViewById(R.id.stime);
        TextView endTime = (TextView) vi.findViewById(R.id.etime);
        TextView date = (TextView) vi.findViewById(R.id.blank);
        ImageView img = (ImageView) vi.findViewById(R.id.list_image);


        HashMap<String, String> song = new HashMap<String, String>();
        song =data.get(position);

        firstname.setText(song.get(MainActivity.TAG_PROP_FNAME));
        lastname.setText(song.get(MainActivity.TAG_PROP_LNAME));
        startTime.setText(song.get(MainActivity.TAG_STIME));
        endTime.setText(song.get(MainActivity.TAG_ETIME));
        date.setText(song.get(MainActivity.TAG_DATE));
        //imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), img);

        Button accept = (Button) vi.findViewById(R.id.button1);
        accept.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                final int x = (int) getItemId(position);
                Toast.makeText(parent.getContext(),"you clicked "+ x , Toast.LENGTH_SHORT).show();

                //Intent zoom=new Intent(mContext, Profile.class);
                //mContext.startActivity(zoom);
                //v.getContext().startActivity(zoom);

            }
        });

        vi.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(parent.getContext(), "view clicked: " , Toast.LENGTH_SHORT).show();



                Intent intent = new Intent(mContext,Profile.class);
                mContext.startActivity(intent);


            }
        });

        return vi;


}



@Override
public int getCount() {
    // TODO Auto-generated method stub
    return data.size();
}



@Override
public Object getItem(int possision) {
    // TODO Auto-generated method stub
    return possision;
}



@Override
public long getItemId(int possision) {
    // TODO Auto-generated method stub
    return possision;
}
}
公共类NewsRowAdapter扩展了BaseAdapter{
私有上下文;
公共新闻行适配器(上下文ctx){
mContext=ctx;
}
私人活动;
专用静态充气机=空;
私有数组列表数据;
智力资源;
//字符串响应;
//语境;
//初始化适配器
公共NewsRowAdapter(活动行为、int资源、ArrayList d){
超级();
这个。资源=资源;
这个数据=d;
这个活动=行动;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机充气(右侧布局行,空);
TextView firstname=(TextView)vi.findviewbyd(R.id.fname);
TextView lastname=(TextView)vi.findViewById(R.id.lname);
TextView开始时间=(TextView)vi.findViewById(R.id.stime);
TextView endTime=(TextView)vi.findViewById(R.id.etime);
TextView日期=(TextView)vi.findViewById(R.id.blank);
ImageView img=(ImageView)vi.findViewById(R.id.list\u图像);
HashMap宋=新HashMap();
宋=数据。获取(位置);
firstname.setText(song.get(MainActivity.TAG_PROP_FNAME));
lastname.setText(song.get(MainActivity.TAG_PROP_LNAME));
startTime.setText(song.get(MainActivity.TAG_STIME));
setText(song.get(MainActivity.TAG_ETIME));
date.setText(song.get(MainActivity.TAG_date));
//imageLoader.DisplayImage(song.get(CustomizedListView.KEY\u THUMB\u URL),img);
按钮接受=(按钮)vi.findViewById(R.id.button1);
accept.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
最终整数x=(整数)getItemId(位置);
Toast.makeText(parent.getContext(),“您单击了”+x,Toast.LENGTH\u SHORT.show();
//意图缩放=新意图(mContext,Profile.class);
//mContext.startActivity(缩放);
//v、 getContext().startActivity(缩放);
}
});
vi.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Toast.makeText(parent.getContext(),“单击视图:”,Toast.LENGTH_SHORT.show();
意向意向=新意向(mContext,Profile.class);
mContext.startActivity(意图);
}
});
返回vi;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回data.size();
}
@凌驾
公共对象getItem(int拥有){
//TODO自动生成的方法存根
返还占有权;
}
@凌驾
公共长getItemId(int拥有){
//TODO自动生成的方法存根
返还占有权;
}
}
堆栈跟踪:

11-27 11:50:20.812: E/AndroidRuntime(3974): FATAL EXCEPTION: main 
11-27 11:50:20.812: E/AndroidRuntime(3974): java.lang.NullPointerException 
11-27 11:50:20.812: E/AndroidRuntime(3974): at android.content.ComponentName.<init>(ComponentName.java:75)
11-27 11:50:20.812: E/AndroidRuntime(3974): at android.content.Intent.<init>(Intent.java:3301)
11-27 11:50:20.812: E/AndroidRuntime(3974): at com.jsonlist.jsonlist.NewsRowAdapter$2.onClick(NewsRowAdapter.java:103) 
11-27 11:50:20.812:E/AndroidRuntime(3974):致命异常:main
11-27 11:50:20.812:E/AndroidRuntime(3974):java.lang.NullPointerException
11-27 11:50:20.812:E/AndroidRuntime(3974):位于android.content.ComponentName.(ComponentName.java:75)
11-27 11:50:20.812:E/AndroidRuntime(3974):在android.content.Intent.(Intent.java:3301)
11-27 11:50:20.812:E/AndroidRuntime(3974):在com.jsonlist.jsonlist.NewsRowAdapter$2.onClick(NewsRowAdapter.java:103)

只需使用此选项即可

Intent zoom=new Intent(parent.getContext(), Profile.class);   
parent.getContext().startActivity(zoom);

就用这个吧

Intent zoom=new Intent(parent.getContext(), Profile.class);   
parent.getContext().startActivity(zoom);
更改构造函数

 public NewsRowAdapter(Context ctx, int resource,ArrayList<HashMap<String, String>> d) {
    super();
    this.resource=resource;
    this.data = d;
    this.mContext = ctx;
    inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
public NewsRowAdapter (Context ctx) {
mContext = ctx;
}更改构造函数

 public NewsRowAdapter(Context ctx, int resource,ArrayList<HashMap<String, String>> d) {
    super();
    this.resource=resource;
    this.data = d;
    this.mContext = ctx;
    inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
public NewsRowAdapter (Context ctx) {
mContext = ctx;


}

请检查您的活动是否在AndridManifest.xml中声明请检查您的活动是否在AndridManifest.xml中声明是的…toast消息显示完美他们可以检查您的应用程序,您调用的此活动是否有条目,我真的看不出代码有问题吗?logcat中有错误吗?是的,我已经把它交给了我的清单…但仍然不起作用…检查一下你的logcat,寻找警告是的…toast消息显示得很好Hey can Check manifiest of you app,你正在调用的这个活动是否有条目,我真的认为代码没有问题?logcat中有错误吗?是的,我已经把它交给了我的清单…但仍然不起作用…检查一下你的logcat,寻找warningshi…再次,我可以根据你的指导进行下一个我想进行的活动。现在,我正在努力创建一个对话框。我已经尝试了很多方法。因为我在一个适配器类中,所以我做不到。你能给我一个实现的方法吗?你想用对话框实现什么,到底是什么问题。Hi@Techfist。为什么这个代码有效而Gishanta的原始代码无效?嗨…我可以根据您的指导继续下一个活动。现在,我正在努力创建一个对话框。我已经尝试了很多方法。因为我在一个适配器类中,所以我做不到。你能给我一个实现的方法吗?你想用对话框实现什么,到底是什么问题。Hi@Techfist。为什么这个代码有效,而Gishanta的原始代码无效?