gpt4 book ai didi

java - 在 Custom Listview Adapter android 中使 ViewHolder 最终化

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:01 24 4
gpt4 key购买 nike

我有一个像这样的自定义适配器的 listView

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
ViewHolder viewHolder = new ViewHolder();

if (convertView == null)
{
view = inflator.inflate(R.layout.question_adapter_layout, parent, false);
viewHolder.moreLayout = (LinearLayout) view.findViewById(R.id.extraOptions);

viewHolder.reportBtn = (Button) view.findViewById(R.id.more_report);
viewHolder.twitterBtn = (Button) view.findViewById(R.id.more_twitter);
viewHolder.googleBtn = (Button) view.findViewById(R.id.more_google);
viewHolder.fbBtn = (Button) view.findViewById(R.id.more_fb);
viewHolder.deleteBtn = (Button) view.findViewById(R.id.more_delete);

view.setTag(viewHolder);
}
else
viewHolder = (ViewHolder) view.getTag();

viewHolder.moreBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Utilities.vibrate(mContext);
if (viewHolder.moreLayout.getVisibility() == View.GONE)
viewHolder.moreLayout.setVisibility(View.VISIBLE);
else
viewHolder.moreLayout.setVisibility(View.GONE);
}
});

现在更改 onClickListener 中的任何内容,即 viewHolder.moreLayout.setVisibility(View.GONE); 我需要将 viewHolder 设置为 final,但之后我将无法执行 viewHolder = (ViewHolder ) view.getTag();

我该如何解决这个问题?

最佳答案

将其分配给 setOnClickListener 之前的最终字段

final ViewHolder viewHolderFinal = viewHolder;
viewHolder.moreBtn.setOnClickListener(new View.OnClickListener()

并在 onClickListener 中使用 viewHolderFinal

您可以避免在每次调用 getView 时都创建一个新的 ViewHolder。

ViewHolder viewHolder = null;

if (convertView == null)
{
viewHolder = new ViewHolder();

关于java - 在 Custom Listview Adapter android 中使 ViewHolder 最终化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com