gpt4 book ai didi

java - 将相同的 onClickListner 应用于自定义 ListView 中的所有项目时出错 [Android]

转载 作者:行者123 更新时间:2023-12-02 12:16:39 25 4
gpt4 key购买 nike

我创建了一个自定义 ListView ,这是它的代码。当我将 onClickListener 添加到 View 中时,只会为 ImageView 制作 toast。当我尝试将相同的监听器添加到其他 View (textview)时,我的应用程序崩溃了。我的自定义 ListView 类实现了 ONClickListener 请帮我解决这个问题。

@Override
public View getView(int i, View view, ViewGroup viewGroup) {


view = layoutInflater.inflate(R.layout.activity_demo6_1, null);

ImageView img = (ImageView) view.findViewById(R.id.vImage);

final TextView name = (TextView) view.findViewById(R.id.vName);
final TextView write = (TextView) view.findViewById(R.id.vWrite);
final TextView date = (TextView) view.findViewById(R.id.vDate);

name.setText(articleName[i]);
write.setText(articleAuthor[i]);
date.setText(articleDate[i]);

view.setOnClickListener(this);

return view;
}

@Override
public void onClick(View view) {

Toast.makeText(context, name1.getText() + "\n" + write1.getText() + "\n" + date1.getText() + "" ,Toast.LENGTH_LONG).show();

}

最佳答案

我看到您正在向“ View ”添加一个 onClickListener,这不应该是向您的 View 项添加点击监听器的方法,请尝试这样做

@Override
public View getView(int i, View view, ViewGroup viewGroup) {


view = layoutInflater.inflate(R.layout.activity_demo6_1, null);

ImageView img = (ImageView) view.findViewById(R.id.vImage);

final TextView name = (TextView) view.findViewById(R.id.vName);
final TextView write = (TextView) view.findViewById(R.id.vWrite);
final TextView date = (TextView) view.findViewById(R.id.vDate);

name.setText(articleName[i]);
write.setText(articleAuthor[i]);
date.setText(articleDate[i]);

name.setOnClickListener(this);
write.setOnClickListener(this);
date.setOnClickListener(this);

return view;
}

@Override
public final void onClick(final View v) {
switch (v.getId()) {
case R.id.vName:
nameClick(); // Create corresponding methods for each click, if its the same functionality just use the same method on all switch cases
break;
case R.id.vWrite:
writeClick();
break;
case R.id.vDate:
dateClick();
break;
default:
break;
}
}

private void nameClick(){
Toast.makeText(context, name1.getText() + "\n" + write1.getText() + "\n" + date1.getText() + "" ,Toast.LENGTH_LONG).show();
}

希望对你有帮助

关于java - 将相同的 onClickListner 应用于自定义 ListView 中的所有项目时出错 [Android],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46122239/

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