首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从自定义listView安卓系统中的项目更新textView

从自定义listView安卓系统中的项目更新textView
EN

Stack Overflow用户
提问于 2011-06-14 01:12:25
回答 1查看 2.3K关注 0票数 2

我有一个自定义的listView,在一行上有textView,editText和一个按钮。listView是使用适配器创建的。

当我按下按钮时,我想用在editText中输入的值更新textView。我想在不刷新整个列表的情况下做到这一点。

我怎么才能只更新列表中的一行呢?

谢谢!

为了更清楚,我将提供代码:

私有静态类EfficientAdapter扩展了BaseAdapter {私有LayoutInflater mInflater;上下文myContext;

代码语言:javascript
复制
    public EfficientAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
        myContext = context;
    }

    public int getCount() {
        return nameList.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView,
            ViewGroup parent) {
        final ViewHolder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.travelpassengers_item,
                    null);
            holder = new ViewHolder();              
            holder.ratingTv = (TextView) convertView
                    .findViewById(R.id.tvTPRating);             

            holder.rateBtn = (Button) convertView
                    .findViewById(R.id.btnTPRate);
            holder.plusBtn = (Button) convertView
                    .findViewById(R.id.btnPlus);
            holder.minusBtn = (Button) convertView
                    .findViewById(R.id.btnMinus);
            holder.rateEt = (EditText) convertView
                    .findViewById(R.id.etTPRating); 
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.ratingTv.setText(rating[position] + "/10");

        holder.callBtn.setTag(phoneList[position]);

        holder.ratingBtn.setTag(ids[position]);
        holder.ratingDisableBtn.setTag(numberRates[position]);
        holder.ratingTv.setTag(rating[position]);
        holder.rateEt.setTag(position);         

        holder.rateBtn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub                  
                        String id = holder.ratingBtn.getTag().toString();
                        int position = Integer.parseInt(holder.rateEt
                                .getTag().toString());
                        double oldRate = Double
                                .parseDouble(rating[position]);
                        int number = numberRates[position];
                        double newRate = Double.parseDouble(holder.rateEt
                                .getText().toString());

                        DecimalFormat oneDigit = new DecimalFormat(
                                "#,##0.0");
                        number++;
                        double avg = (oldRate + newRate) / number;
                        newRate = Double.valueOf(oneDigit.format(avg));
                    // I want to put the value from newRate in the holder.ratingTv on right position without updating entire listView.                  

                }
            }
        });

        holder.plusBtn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                int rate = Integer.parseInt(holder.rateEt.getText()
                        .toString());
                if (rate < 10) {
                    rate++;     
            holder.rateEt.setText(Integer.toString(rate));
                }
            }
        });

        holder.minusBtn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                int rate = Integer.parseInt(holder.rateEt.getText()
                        .toString());
                if (rate > 0) {
                    rate--;         
        holder.rateEt.setText(Integer.toString(rate));
                }
            }
        });

        return convertView;
    }

    static class ViewHolder {           
        public TextView  ratingTv;      
        public Button minusBtn, plusBtn;
        public EditText rateEt;
        public Button rateBtn;          
    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2011-06-14 01:19:07

代码语言:javascript
复制
TextView tv = (TextView) getViewById(R.id.myTextView);
EditText et = (EditText) getViewById(R.id.myEditText);
Button b = (Button) getViewById(R.id.myButton);
b.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {
        tv.setText(et.getText());
    }
});

这可能需要一些调整,因为我还没有测试过它(比如从CharSequence到String的转换)。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6333764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档