java - 将 onClickListener 设置为自定义适配器

标签 java android listview adapter

各位社区大家好, 我的这个适配器带有 2 个 button 和 2 个 textview

@Override
public View getView(int position, View view, ViewGroup parent) {
    if(view == null) {
        holder = new Holder();
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.my_adapter, null);
        holder.result = (TextView)view.findViewById(R.id.description);
        holder.value = (TextView)view.findViewById(R.id.value);
        holder.add = (Button)view.findViewById(R.id.add);
        holder.subtract = (Button)view.findViewById(R.id.subtract);         

        myObject = getItem(position);
        holder.result.setText(myObject.result);
        holder.value.setText(myObject.value);

        view.setTag(holder);
    } else {
        holder = (Holder)view.getTag();
    }

    holder.add.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            // TODO Auto-generated method stub  
        }           
    });

    return view;
}

现在我的问题是:如果我希望当用户按下添加按钮时将 textview 的文本设置为(例如)5,我该怎么做?如果我放入 onCLick 方法

holder.result.setText("My text") 设置最后一个 TextView 的文本,而不是所选行项目的相应 TextView (我禁用了 ListView 上的单击):

@Override
public boolean isEnabled(int position) {
    return false;
}

我的问题有解决办法吗?

最佳答案

您应该将代码放在适配器内的 getView 方法中,并记住使用对当前 Button/TextVeiw 的引用,以便每个Button 将对应于特定的 TextView

附注我在你的代码中发现了一些东西,请检查一下:

@Override
public View getView(int position, View view, ViewGroup parent) {
    if(view == null) {
        holder = new Holder();
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.my_adapter, null);
        holder.result = (TextView)view.findViewById(R.id.description);
        holder.value = (TextView)view.findViewById(R.id.value);
        holder.add = (Button)view.findViewById(R.id.add);
        holder.subtract = (Button)view.findViewById(R.id.subtract); 

        view.setTag(holder);
    } else {
        holder = (Holder)view.getTag();
    }       

    myObject = getItem(position);
    holder.result.setText(myObject.result);
    holder.value.setText(myObject.value);
    final TextView tv = holder.result;

    holder.add.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            tv.setText("bla bla");          
            }           
    });

    return view;
}

关于java - 将 onClickListener 设置为自定义适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591793/

相关文章:

java - 如何从优先级队列中删除特定元素?

javascript - 如何使用 React Native 使工具栏位于默认键盘上方?

Android ListView 文字颜色变化

java - 从包含对象作为值的哈希表创建 listView 适配器

java - 数据在 Google App Engine 上不持久 - Objectify - Android

java - 维护 zip 文件中的 Windows 目录

java - Neo4j 在 FreeBSD 9.2 上启动失败

java - 键盘更换

java - R.java不生成

android - 如何以编程方式在 Android 中创建 ListView 和标题(动态)?