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

在适配器中创建三个元素

彭硕
2023-03-14

我已经用ImageView和TextView制作了抽屉菜单,它可以run.However,当我想用两个ImageView和一个TextView创建抽屉菜单时,它会用我的第二个ImageView显示错误(“尝试调用虚拟方法”)(我代码中的变量名称是“img”)

我的代码如下:

public class MenuListAdapter extends BaseAdapter {

//...

public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    
    TextView Title = null;
    ImageView Icon = null;
    ImageView img = null;

    if (v == null) {
        
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.drawer, parent, false);

        // Locate the TextViews in drawer_list_item.xml
        Title = (TextView) convertView.findViewById(R.id.title);

        // Locate the ImageView in drawer_list_item.xml
        Icon = (ImageView) convertView.findViewById(R.id.icon);

        // Locate the ImageView in drawer_list_item.xml
        img = (ImageView) convertView.findViewById(R.id.img);

    }

    Title.setText(mTitle[position]);
    
    Icon.setImageResource(mIcon[position]);
    img.setImageResource(mimg[position]);

    return v;
}

这是我的日志:

09-16 22:25:38.458:E/AndroidRuntime(14966):致命例外:主

09-16 22:25:38.458:E/Android runtime(14966):Java . lang . nullpointerexception:尝试在空对象引用上调用虚拟方法“Android . view . view Android . view . view . findviewbyid(int)”09-16 22:25:38.458:E/Android runtime(14966):at com . test . adapter . menulistadapter . get view(menulistadapter . Java:84) 09-16 22:25:38.458:E/Android runtime(14966):at Android . widget . frame layout . onlayout(frame layout . Java:508)09-16 22:25:38.458:E/Android runtime(14966):at Android . view . view . layout(view . Java:15686)09-16 22:25:38.458:E/Android runtime(14966 09-16 22:25:38.458:E/Android runtime(14966):at Android . view . choreographer . do frame(choreographer . Java:550)09-16 22:25:38.458:E/Android runtime(14966):at Android . view . choreographer $ framedisplayeventreceiver . run(choreographer . Java:753)09-16 22:25:38.458:E/Android

共有2个答案

慕容成和
2023-03-14
   <ImageView
       android:id="@+id/icon"
       android:layout_width="30dp"
       android:layout_height="30dp"
       android:layout_marginLeft="22dp"
       android:layout_marginRight="20dp"
       android:adjustViewBounds="true"
       android:scaleType="fitCenter" />



   <TextView
       android:id="@+id/title"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="#848484"
       android:textSize="15dp" />

   <TextView
       android:id="@+id/textABC"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="TextView" />
江阳夏
2023-03-14

您已将膨胀视图分配给 v,但您正在使用 convertView 来查找膨胀视图小部件。摆脱v并使用只转换视图

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

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context
              .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       convertView = inflater.inflate(R.layout.drawer, parent, false);
    }

    // Locate the TextViews in drawer_list_item.xml
    TextView title = (TextView) convertView.findViewById(R.id.title);
    // Locate the ImageView in drawer_list_item.xml
    ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
    // Locate the ImageView in drawer_list_item.xml
    ImageView img = (ImageView) convertView.findViewById(R.id.img);

    title.setText(mTitle[position]);
    icon.setImageResource(mIcon[position]);
    img.setImageResource(mimg[position]);

   return convertView;
}
 类似资料:
  • 适配器目录和文件结构 适配器目录和文件结构布局的例子: /application/libraries/Driver_name Driver_name.php drivers Driver_name_subclass_1.php Driver_name_subclass_2.php Driver_name_subclass_3.php 注意: 为了在大小写敏感的文件系统上维持兼容性,这个 Drive

  • 我有一个ViewPager里面的RecyclerView适配器来显示多个图像。 ViewPager适配器: 问题:当我上下滚动回收站视图时,ViewPager适配器会被一遍又一遍地创建,即使它是以前创建的(我在日志中看到它)。我知道每次都调用onBindViewHolder(),所以我尝试了这个: 但这一次只加载了第一个ViewPager。那么,我必须做些什么来避免每次创建适配器呢?

  • 那么如何将上面的xml代码转换为类似的DSL特定代码呢?

  • 如何在我的项目中动态创建以轮询和检索服务器中的文件?

  • 流是Gateway-->RequsetChannel-->Transform-->OutboundMailChannl-->MailSender(MailAdapter)

  • 问题内容: 我有一个片段,比如,和自定义。我在此适配器中为列表行中的按钮设置。 按下按钮时,我需要通知片段。如何调用此接口? 请帮助。 问题答案: 创建一个新的构造函数和一个实例变量: 制作适配器时,将为实例变量提供适当的引用以进行保存。 要通过点击调用片段,请执行以下操作: 制作时,您还必须将片段传递给适配器。例如 因为this它将引用您的Fragment,现在是。 请记住,在片段更改的方向上,