当前位置: 首页 > 知识库问答 >
问题:

如何在lazyadapter->getItem()中设置onclicklistener并在onClick方法中启动活动

陶博赡
2023-03-14

我有两个按钮“编辑”

'公共类DepartmentAdapter扩展ArrayAdapter实现OnClickListener{

int resource;
String response;
Context context;
//Initialize adapter
public DepartmentAdapter(Context _context, int resource, ArrayList<Department> items) {
    super(_context, resource, items);
    this.resource=resource;

    context = _context;
}


@Override
public View getView(int position, View convertView, ViewGroup parent)
{
        LinearLayout deptView;
    //Get the current Department  object
    Department dept = getItem(position);

    //Inflate the view
    if(convertView==null)
    {
        deptView = new LinearLayout(getContext());
        String inflater = Context.LAYOUT_INFLATER_SERVICE;
        LayoutInflater vi;
        vi = (LayoutInflater)getContext().getSystemService(inflater);
        vi.inflate(resource, deptView, true);
    }
    else
    {
        deptView = (LinearLayout) convertView;
    }
    //Get the text boxes from the listitem.xml file
    TextView id =(TextView)deptView.findViewById(R.id.Id);
    TextView sname =(TextView)deptView.findViewById(R.id.sname);
    TextView name =(TextView)deptView.findViewById(R.id.name); 
    //Assign the appropriate data from our Department object above
    id.setText(Integer.toString(dept.getID()));
    sname.setText(dept.getDepartmentShortName());
    name.setText(dept.getDepartmentName());

    Button edit = (Button)deptView.findViewById(R.id.edit);
    //del= (Button)deptListView.findViewById(R.id.del);
    ShowDepertment  d = new ShowDepertment();       

    edit.setOnClickListener(this);


}

public void onClick(View v) {

    Intent myIntent = new Intent(context , AddDepertment.class);
    myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(myIntent);        
}

}'

在onClick()中,无法启动活动并出错:

<代码>10-21 13:15:11.116:E/AndroidRuntime(11718):致命异常:main 10-21 13:15:11.116:E/AndroidRuntime(11718):java。lang.NullPointerException 10-21 13:15:11.116:E/AndroidRuntime(11718):在我的。mewappattendance公司。myAdapters。部门适配器。getView(DepartmentAdapter.java:80)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。AbsListView。获取视图(AblistView.java:2033)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。ListView。measureHeightOfChildren(ListView.java:1244)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。ListView。onMeasure(ListView.java:1155)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法视图组。measureChildWithMargins(ViewGroup.java:4698)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。measureChildBeforeLayout(LinearLayout.java:1369)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。measureVertical(LinearLayout.java:660)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。onMeasure(LinearLayout.java:553)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。measureHorizontal(LinearLayout.java:1196)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。onMeasure(LinearLayout.java:555)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法视图组。measureChildWithMargins(ViewGroup.java:4698)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。框架布局。onMeasure(FrameLayout.java:293)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。measureVertical(LinearLayout.java:812)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。线性布局。onMeasure(LinearLayout.java:553)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法视图组。measureChildWithMargins(ViewGroup.java:4698)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。小部件。框架布局。onMeasure(FrameLayout.java:293)10-21 13:15:11.116:E/AndroidRuntime(11718):位于com.Android内部的政策实施。PhoneWindow$DecorView。onMeasure(PhoneWindow.java:2092)10-21 13:15:11.116:E/AndroidRuntime(11718):android。看法看法测量(View.java:12727)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法ViewRootImpl。performTraversals(ViewRootImpl.java:1068)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。看法ViewRootImpl。handleMessage(ViewRootImpl.java:2446)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。操作系统。处理程序。dispatchMessage(Handler.java:99)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。操作系统。活套。loop(Looper.java:137)10-21 13:15:11.116:E/AndroidRuntime(11718):在android上。应用程序。ActivityThread。main(ActivityThread.java:4424)10-21 13:15:11.116:E/AndroidRuntime(11718):位于java。朗,反思一下。方法invokenactive(本机方法)10-21 13:15:11.116:E/AndroidRuntime(11718):java。朗,反思一下。方法调用(Method.java:511)10-21 13:15:11.116:E/AndroidRuntime(11718):在com上。Android内部的操作系统。ZygoteInit$MethodandArgscaler。运行(ZygoteInit.java:784)10-21 13:15:11.116:E/AndroidRuntime(11718):在com上。Android内部的操作系统。合子岩。main(ZygoteInit.java:551)10-21 13:15:11.116:E/AndroidRuntime(11718):dalvik。系统NativeStart。main(本机方法)

共有1个答案

曾云
2023-03-14

之所以会发生这种情况,是因为当您单击按钮时,GC将从内存中删除适配器类,因此您必须通过以下方式向按钮添加侦听器:

button.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
}
});
 类似资料:
  • RecyclerView不同于ListView,因为它不提供onItemCLickListener类来处理单击事件。

  • 问题内容: 我有一个菜单栏,其中子菜单上的两个项目都调用同一页面: 在该页面中,我有一个带有两个选项卡的选项卡视图: 如何设置活动标签,以便每个菜单项都激活相应的标签? 问题答案: 如果您想这样做,则不能使用中的,因为我们必须 在 跳到页面 之前 调用一种方法来更改tabindex 。如果使用,则在我们跳到页面后将调用该方法。 首先,您可以使用的操作字段,该方法返回您要跳过的地址: 这两种方法可以

  • 错误是: 错误:(50,17)错误:没有为startActivities(Intent)方法Activity找到合适的方法。startActivities(Intent[],Bundle)不适用(实际和正式的参数列表长度不同)方法Activity.startActivities(Intent[])方法上下文twrapper.startactivities(Intent[],Bundle)不适用(实

  • 我正在处理一个需要LWJGL的项目,我正试图启动并运行该项目,但在设置JVM启动参数方面遇到了一个障碍。 LWJGL的文档如下: 将-djava.library.path系统属性(作为JVM启动参数)设置为包含本机文件的文件夹 我得到的错误是: 此外,我的lwjgl jar位于我的项目文件夹中可能是重要的信息。

  • 问题内容: 嗨,我在每个页面上的网站上都有一个菜单,我想将其放在自己的menu.php文件中,但是我不确定如何为我所在的任何页面设置 class =“ active” 。这是我的代码:请帮助我 menu.php: 问题答案: 如果您要在脚本中构建一个页面数组并将其与当前活动页面一起传递到视图文件,将会更容易: 使用像Smarty这样的模板引擎,您的menu.php看起来会更好: