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



我正在尝试为该行设置一个标签(或至少在该行中设置某些内容,但最好是该行(。然后,当我单击该行时,我可以获取标签。我认为这就是我必须做的,但是无论我点击什么,标签始终为空。

我的代码示例显示了我尝试将标签设置为文本视图,因为我不知道如何将其设置为行。

这是我的自定义适配器类中的 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;
}

这是我在不同类中的 onClickListener

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();
        }
    });

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

试试这个,

@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);
        customView.setTag(Integer.valueOf(counter));
        counter ++;
        return customView;
    }

试试这个:

@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;
}

最新更新