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

自定义ListView正在重复一行

胥承
2023-03-14

CreateView我调用适配器:@override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){//load View this.myview=inflater.inflate(r.layout.fragment_list,container,false);

    //Change the category label
    SetCategoryLabel();

    //Load DB;
    LoadDatabase();

    //Create list for MonsterList
    MonsterLink[] MonsterLinkList = LoadMonsterLinkList();
    MonsterAdapter monsteradapter = new MonsterAdapter(this.getContext(), MonsterLinkList);
    ListView MonsterList = (ListView) MyView.findViewById(R.id.list_Monsters);
    MonsterList.setAdapter(monsteradapter);

    // Inflate the layout for this fragment
    return this.MyView; //inflater.inflate(R.layout.fragment_list, container, false);
}

我的适配器:

 public class MonsterAdapter extends ArrayAdapter<MonsterLink> {

public MonsterAdapter(Context context, MonsterLink[] MonsterNames) {
    super(context, R.layout.monster_row, MonsterNames);
}

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

    // Get the data item for this position
    MonsterLink monster = getItem(position);
    // Check if an existing view is being reused, otherwise inflate the view
    if (convertView == null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.monster_row,parent,false);
        mHolder = new ViewHolder();

        /**TextView MonsterName = (TextView) convertView.findViewById(R.id.txt_MonsterName);
        ImageView MonsterPic = (ImageView) convertView.findViewById(R.id.img_MonsterPic);**/

        mHolder.mName = (TextView) convertView.findViewById(R.id.txt_MonsterName);
        mHolder.mPic = (ImageView) convertView.findViewById(R.id.img_MonsterPic);

        convertView.setTag(mHolder);


    }else {
        mHolder = (ViewHolder) convertView.getTag();
    }



    mHolder.mName.setText(monster.getName());

    return convertView;

}

private class ViewHolder{
    private TextView mName;
    private ImageView mPic;
}

}

public class MonsterAdapter extends BaseAdapter {
@Override
public int getCount() {
    return monsterList.size();
}

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

@Override
public Object getItem(int position) {
    return null;
}

ArrayList<MonsterLink> monsterList;
Context context;

public MonsterAdapter(Context context, ArrayList<MonsterLink> MonsterNames) {
    this.monsterList = MonsterNames;
    this.context = context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // Get the data item for this position
    MonsterLink monster = monsterList.get(position);
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.monster_row,parent,false);

    TextView name = (TextView) convertView.findViewById(R.id.txt_MonsterName);
    ImageView pic = (ImageView) convertView.findViewById(R.id.img_MonsterPic);
    name.setText(monster.getName());
    return convertView;

}

我现在看不到任何排

共有1个答案

荆煌
2023-03-14

尝试从类扩展适配器

基适配器

此外,尝试制作一个本地MonsterLink数组列表来包含适配器中的列表,如果您不打算显示大量数据,如果您不回收视图也没关系,因为如果这是您想要的,我强烈建议您回收视图。

    public class MonsterAdapter extends BaseAdapter {

        ArrayList<MonsterLink> monsterList;
        Context context;
        public MonsterAdapter(Context context, MonsterLink[] MonsterNames) {
            this.monsterList = MonsterNames;
            this.context = context;
        }

       @Override
       public View getView(int position, View convertView, ViewGroup parent) {
    // Get the data item for this position
            MonsterLink monster = monsterList.get(position);
           LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.monster_row,parent,false);

        /**TextView MonsterName = (TextView) convertView.findViewById(R.id.txt_MonsterName);
        ImageView MonsterPic = (ImageView) convertView.findViewById(R.id.img_MonsterPic);**/

        TextView name = (TextView) convertView.findViewById(R.id.txt_MonsterName);
        ImageView pic = (ImageView) convertView.findViewById(R.id.img_MonsterPic);
        //name.setText('bla bla')
        //name.setText(monster.getName())
        return convertView;

       }


       @Override
       public int getCount() {
          return monsterList.size();
       }
 类似资料:
  • 问题内容: 我浏览了教程并进行了搜索,但仍然不明白该怎么做, 当扩展在我的android应用程序中创建自定义listView 时,此方法有效。因此,我无法完全按照需要编辑“自定义”列表视图。 我需要知道何时调用此方法以及参数的含义。 如果有人可以解释以下方法很好。谢谢 问题答案: getView() :如规范中所述,getView方法将数据显示在指定位置。因此,当您设置适配器并滚动时,将调用lis

  • 我有一个示例 anjularjs 示例,它拉取 sku 详细信息数组,在选择下拉列表中显示价格和名称。现在我在下拉列表中选择了任何选项,它显示SKU名称和价格。 下面是我的选择标签,现在正在显示,sku名称和价格。 以下是我的skulist数据: 所以在这里,我的要求是下拉列表应该包含sku名称和价格,但一旦选择了值,然后只显示sku名称。

  • 我使用listview作为排行榜,并显示球员的名字和总得分,这是通过字符串完成的。但是我想定制listview,这样它就包括位置和平均得分。我在下面提供了一个素描,说明我希望它是怎样的。 现在,我正在将一个纯字符串添加到可观察列表中,并在listview上查看它,但很难自定义它。我不知道该怎么做,最好的方法是什么?使用css还是JavaFX?关于listview,我确实有一些问题,比如是否可以有一

  • 正在开发一个应用程序,采取学生考勤,我想得到的名单上勾选的名字“考勤”,当我点击一个“考勤”在相同的自定义列表视图。拜托,我该怎么做? 这是我的密码...自定义视图 ListAdapter公共类StudentListAdapter1扩展了BaseAdapter{private Context mContext;private List mStudentList; } 考勤activityprote

  • 我尝试按照幻灯片youtube 6部分教程创建一个带有自定义行的列表视图。在他的教程中,他使用了1个图像和2个文本视图,我需要3个图像和3个文本视图,当我运行应用程序时,它在尝试加载列表视图时崩溃。 -------------家庭单行.xml----------------------- - Homelistview.xml - Homeactivitylistview.java 04-22 15

  • 我在为我的ListView设置自己的字体时遇到了问题,我不知道如何使用自己的Adapter类以及我需要什么xml(除了我放在ListView中的那个)。我希望(在ListView中)只是水平居中使用自己的字体。那是我的适配器: 它在呼唤ista.java 代码来自StackOverFlow的另一个主题。 > 我在第行中遇到错误(未定义的方法): 字体tf=Typeface.createFromAs