有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在自定义适配器Android Studio Java中为行设置标记

我正在尝试为该行设置一个标记(或者至少是该行中的某个内容,最好是该行)。然后,当我点击该行时,我可以得到标签。我以为这是我必须做的,但不管我点击什么,标签总是空的

我的代码示例显示了我试图将标记设置为textview,因为我不知道如何将其设置为行

这是customAdapter类中的getView代码

int counter = 0;

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

    LayoutInflater layoutInflater = LayoutInflater.from(getContext());

    View customView = layoutInflater.inflate(R.layout.my_row, parent, false);

    ViewHolder holder = new ViewHolder();

    holder.name = (TextView)customView.findViewById(R.id.nameTextView);
    holder.picture = (ImageView)customView.findViewById(R.id.pictureImageView);

    holder.name.setText(allNames.get(position));
    holder.picture.setImageResource(allPictures.get(position));

    //This does not work ---> holder.name.setTag(counter);

    counter ++;
    return customView;
}

这是我的另一个班级的听众

listVIew.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, final int position, long l) {

           Toast.makeText(getApplicationContext(), "tag is " + view.getTag(), Toast.LENGTH_SHORT).show();

        }
    });

任何帮助都将不胜感激。谢谢


共 (1) 个答案

  1. # 1 楼答案

    试试这个:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
        ViewHolder holder;
    
        if(convertView == null) {
    
            // inflate the layout
            LayoutInflater layoutInflater = LayoutInflater.from(getContext());
            convertView = layoutInflater.inflate(R.layout.my_row, parent, false);
    
            // set up the ViewHolder
            holder = new ViewHolder();
    
            holder.name = (TextView) convertView.findViewById(R.id.nameTextView);
            holder.picture = (ImageView) convertView.findViewById(R.id.pictureImageView);
    
            // store the holder with the view.
            convertView.setTag(holder);
    
        } else {
            // we've just avoided calling findViewById() on resource everytime
            // just use the viewHolder
            holder = (ViewHolder) convertView.getTag();
        }
    
        holder.name.setText(allNames.get(position));
        holder.picture.setImageResource(allPictures.get(position));
        holder.name.setTag(counter);
    
        counter++;
    
        return convertView;
    }